OPの質問と例が一致していません。彼は実際に文書内の配列にフィールドを挿入したいと思っています。つまり、
という意味です。
ただし、値またはサブ文書を辞書に追加する場合は、$set
コマンドを使用します。このドキュメントを例に挙げてください:を追加したいとします。これは、同様にサブ文書の挿入で動作しますので、我々は、元の例を変更できること
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10,
"apples: 2
}
}
注:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
}
}
}
コマンドは
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": 2}});
あなたの文書は、次にようになりますでしょうそして4つのおばあちゃんスミスリンゴと8つのフジリンゴを入れましょう。
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": {"fuji": 8, "granny smith": 4}}});
当社のドキュメントには、今のようになります。
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
},
"apples": {
"fuji": 8,
"granny smith": 4
}
}
}
一つの最後のコメント:サブドキュメントまたはフィールドがすでに存在する場合、それは$set
コマンドによって上書きされますので注意してください。
私は質問を編集して「本当の質問」にしました。これでもあなたの基準を満たしていない場合は、問題点を教えてください。 –
要素を配列に追加するには、$ pushまたは$ addToSetのいずれかが必要です:http://www.mongodb.org/display/DOCS/Updating – matulef