Câu hỏi và ví dụ của OP không khớp. Anh ấy thực sự muốn chèn một trường vào một mảng trong tài liệu, có nghĩa là
db.posts.update({name: "Hello, world!" }, { $push: {comments: "First comment!"}});
chỉ hoạt động tốt.
Tuy nhiên, nếu bạn muốn thêm giá trị hoặc tài liệu phụ vào từ điển, bạn sẽ sử dụng lệnh $set
. Lấy tài liệu này làm ví dụ của chúng tôi:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10
}
}
Giả sử bạn muốn thêm "apples": 2
vào các mục. Lệnh sẽ
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": 2}});
Tài liệu của bạn sau đó sẽ như thế nào:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10,
"apples: 2
}
}
Lưu ý rằng điều này làm việc với chèn subdocument là tốt, vì vậy chúng tôi có thể sửa đổi các ví dụ ban đầu:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
}
}
}
Và chúng ta hãy chèn 4 táo grith smith và 8 quả táo fuji.
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": {"fuji": 8, "granny smith": 4}}});
tài liệu của chúng tôi bây giờ sẽ là:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
},
"apples": {
"fuji": 8,
"granny smith": 4
}
}
}
Một bình luận cuối cùng: lưu ý rằng nếu subdocument hoặc trường đã tồn tại, sau đó nó sẽ được ghi đè bởi các lệnh $set
.
Tôi đã chỉnh sửa câu hỏi để đặt câu hỏi thành "câu hỏi thực".Nếu điều này vẫn không đáp ứng các tiêu chuẩn của bạn, hãy cho tôi biết vấn đề là gì. –
Để thêm một phần tử vào một mảng, tôi nghĩ rằng những gì bạn muốn là $ push hoặc $ addToSet: http://www.mongodb.org/display/DOCS/Updating – matulef