ओपी के सवाल और उदाहरण मेल नहीं खाते। वह वास्तव में दस्तावेज़ के भीतर एक सरणी में एक फ़ील्ड डालना चाहता है, जिसका अर्थ है कि
db.posts.update({name: "Hello, world!" }, { $push: {comments: "First comment!"}});
ठीक काम करता है।
हालांकि, यदि आप किसी शब्दकोश में कोई मान या उप-दस्तावेज़ जोड़ना चाहते हैं, तो आप $set
कमांड का उपयोग करेंगे। हमारे उदाहरण के रूप में इस दस्तावेज़ लें:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10
}
}
के आप आइटम के लिए "apples": 2
जोड़ना चाहते हैं करते हैं। कमांड यह होगी
db.collection.update({"name": "Farmer John"},
{"$set": {"items.apples": 2}});
आपका दस्तावेज़ तो ऐसा दिखाई देगा:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": 5,
"bananas": 10,
"apples: 2
}
}
ध्यान दें कि यह रूप में अच्छी तरह subdocument डालने के साथ काम करता है, तो हम मूल उदाहरण में बदलाव कर सकते हैं:
{
"_id": {
"$oid": "538420b2862a656e9e99fc93"
},
"name": "Farmer John",
"items": {
"peaches": {
"yellow": 5,
"white": 3
}
}
}
और चलो 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
}
}
}
एक आखिरी टिप्पणी: ध्यान दें कि यदि subdocument या क्षेत्र पहले से मौजूद है, तो यह $set
आदेश द्वारा ओवरराइड कर दिया जाएगा।
मैंने इसे "वास्तविक प्रश्न" बनाने के लिए प्रश्न संपादित किया है।यदि यह अभी भी आपके मानकों को पूरा नहीं करता है, तो कृपया मुझे बताएं कि समस्या क्या है। –
किसी सरणी में कोई तत्व जोड़ने के लिए, मुझे लगता है कि आप जो चाहते हैं वह $ push या $ addToSet है: http://www.mongodb.org/display/DOCS/Updating – matulef