2011-11-07 31 views
6

Tôi có tài liệu sau:MongoDB: làm thế nào để cập nhật các văn bản embeded trong mảng

{_id: '4eb79ee1e60fc603788e7259', 
Name: 'name', 
Subsidiaries: [ 
    { _id: '4eb79eeae60fc603788e7271', 
    Location: 'location1'}, 
    { _id: 'subid2', 
    Location: 'location2'}, 
]} 

Tôi muốn cập nhật vị trí công ty con của:

db.Departments.update({ "_id" : ObjectId("4eb79ee1e60fc603788e7259"), "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, { "$set" : { "Subsidiaries.Location" : "City" } }) 

Nhưng MongoDB trả về một lỗi: "không thể nối thêm để mảng sử dụng tên trường chuỗi [Vị trí] "

Trả lời

15

Bạn phải sử dụng $ poistional operator để cập nhật tài liệu được nhúng,

db.Departments.update(
    { "_id" : ObjectId("4eb79ee1e60fc603788e7259"), 
     "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, 
    { "$set" : { "Subsidiaries.$.Location" : "City" } } 
) 
+4

trong trường hợp của tôi, điều này nói rằng, ** không thể nối thêm vào mảng bằng tên trường chuỗi [$] ** , mặc dù tôi có thể thấy tài liệu ở trên và tài liệu của tôi giống hệt nhau. –

Các vấn đề liên quan