आप निम्नलिखित अद्यतन विवरण के साथ "act_mgr" सरणी के अंदर एम्बेडेड "बिक्री" दस्तावेज़ को अपडेट कर सकते हैं:
> db.sales.update({"act_mgr.sales.last_interacted":"example@sqldat.com"}, {$push:{"act_mgr.$.sales.agent":"example@sqldat.com"}, $set:{"act_mgr.$.sales.last_interacted":"example@sqldat.com"}})
> db.sales.find().pretty()
{
"_id" : ObjectId("4f855061dd53351011000b42"),
"act_mgr" : [
{
"sales" : {
"agent" : [
"example@sqldat.com",
"example@sqldat.com"
],
"last_interacted" : "example@sqldat.com"
}
}
],
"email" : "example@sqldat.com",
"name" : "Aman",
"sales" : [
{
"sno" : 1,
"message" : "description",
"status" : "open"
},
{
"sno" : 12,
"message" : "assad",
"status" : "open"
}
]
}
>
आप एरे में "डेवलपर" जानकारी वाले एम्बेडेड दस्तावेज़ को इस प्रकार जोड़ सकते हैं:
> db.sales.update({"_id" : ObjectId("4f855061dd53351011000b42")}, {$push:{"act_mgr":{ "developer" : {"agent" : ["example@sqldat.com" ], "last_interacted" : "example@sqldat.com" } }}})
> db.sales.find().pretty()
{
"_id" : ObjectId("4f855061dd53351011000b42"),
"act_mgr" : [
{
"sales" : {
"agent" : [
"example@sqldat.com",
"example@sqldat.com"
],
"last_interacted" : "example@sqldat.com"
}
},
{
"developer" : {
"agent" : [
"example@sqldat.com"
],
"last_interacted" : "example@sqldat.com"
}
}
],
"email" : "example@sqldat.com",
"name" : "Aman",
"sales" : [
{
"sno" : 1,
"message" : "description",
"status" : "open"
},
{
"sno" : 12,
"message" : "assad",
"status" : "open"
}
]
}
>
$push और $set संशोधक के दस्तावेज़ "अपडेटिंग" दस्तावेज़ में पाए जा सकते हैं:http ://www.mongodb.org/display/DOCS/Updating
Mongo db के साथ एम्बेडेड दस्तावेज़ बनाने और अपडेट करने के बारे में अधिक जानकारी "डॉट नोटेशन (ऑब्जेक्ट्स में पहुंचना)" शीर्षक वाले दस्तावेज़ में मिल सकती हैhttps://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29
"$" पोजिशनल ऑपरेटर का उपयोग करके एम्बेडेड दस्तावेज़ों को अपडेट करने की जानकारी "अपडेटिंग" दस्तावेज़ के "द $ पोज़िशनल ऑपरेटर" अनुभाग में पाई जा सकती है।
https://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator
सावधानी का एक शब्द:आम तौर पर एम्बेडेड दस्तावेज़ों का सभी समान संरचना से मेल खाना आम बात है, ताकि अलग-अलग एम्बेडेड दस्तावेज़ों को अधिक आसानी से संदर्भित किया जा सके। आपकी "बिक्री" सरणी इसका एक अच्छा उदाहरण है; प्रत्येक एम्बेडेड दस्तावेज़ में समान कुंजियाँ होती हैं, "स्नो", "संदेश", और "स्थिति"
हालाँकि, आपके "act_mgr" सरणी के अंदर एम्बेडेड दस्तावेज़ों में अलग-अलग कुंजियाँ होती हैं; पहले में "बिक्री" है, और दूसरे में "डेवलपर" है। इसके बजाय, शायद निम्नलिखित संरचना पर विचार करें:
"act_mgr" : [
{
"title" : "sales",
"agent" : [
"example@sqldat.com",
"example@sqldat.com"
],
"last_interacted" : "example@sqldat.com"
},
{
"title": "developer",
"agent" : [
"example@sqldat.com"
],
"last_interacted" : "example@sqldat.com"
}
]
अब, प्रत्येक एम्बेडेड दस्तावेज़ में समान कुंजियाँ, "शीर्षक", "एजेंट", और "last_interacted" होती हैं।
आप निम्न आदेश के साथ उप-दस्तावेजों को अद्यतन कर सकते हैं।
> db.sales.update({"act_mgr.title":"sales"}, {$push:{"act_mgr.$.agent":"example@sqldat.com"}, $set:{"act_mgr.$.last_interacted":"example@sqldat.com"}})
उम्मीद है कि यह आपको उन अद्यतनों को करने की अनुमति देगा जिनकी आपको आवश्यकता है, और शायद आपको स्कीमा डिज़ाइन के बारे में विचार करने के लिए कुछ भोजन दें। शुभकामनाएँ!