2011-10-01 31 views
9

phép nói rằng tôi có tài liệu sau:

{name: 'myDoc', nestedDoc: {a: 1, b: 2, c: 3}} 

Và tôi muốn hợp nhất với nestedDoc một đối tượng mới:

{b: 20, c:30, d:40} 

Vì vậy, các đối tượng kết quả sẽ là:

{name: 'myDoc', nestedDoc: {a: 1, b: 20, c: 30, d: 40}} 

Làm cách nào để tôi thực hiện việc này trong một truy vấn? Tôi cảm thấy như tôi cần nhiều cuộc gọi $ set nhưng tên thuộc tính đối tượng phải là duy nhất. Nói cách khác, tôi ước tôi có thể làm như sau:

db.myCollection.update({name: 'myDoc', nestedDoc: {$set: {b: 20}, $set: {c: 30}, $set: {d: 40}}); 

Một số chi tiết bổ sung là phiên bản mongodb là 1.8.2 và tôi đang sử dụng trình điều khiển gốc nút nodejs.

Trả lời

21

Bạn có thể cập nhật bằng cách sử dụng như sau:

db.myCollection.update({ 
    name: 'mydoc' 
}, { 
    $set: { 
     'nestedDoc.b': 20, 
     'nestedDoc.c': 30, 
     'nestedDoc.d': 40 
    } 
}) 

Dưới đây là thêm thông tin về lệnh update: http://www.mongodb.org/display/DOCS/Updating#Updating

+0

Ah, không suy nghĩ về những con đường bất động sản niêm yết - cảm ơn! – Zugwalt

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