2011-11-07 17 views
6

में embeded दस्तावेज अपडेट करने का तरीका मैं निम्नलिखित दस्तावेज़ है संलग्न नहीं कर सकते ":MongoDB: सरणी

{_id: '4eb79ee1e60fc603788e7259', 
Name: 'name', 
Subsidiaries: [ 
    { _id: '4eb79eeae60fc603788e7271', 
    Location: 'location1'}, 
    { _id: 'subid2', 
    Location: 'location2'}, 
]} 

मैं सहायक के स्थान को अपडेट करना चाहते हैं:

db.Departments.update({ "_id" : ObjectId("4eb79ee1e60fc603788e7259"), "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, { "$set" : { "Subsidiaries.Location" : "City" } }) 

लेकिन MongoDB एक त्रुटि देता है स्ट्रिंग फ़ील्ड नाम का उपयोग करके सरणी के लिए [स्थान] "

उत्तर

15

एम्बेडेड दस्तावेज़ों को अपडेट करने के लिए आपको $ poistional operator का उपयोग करना होगा,

db.Departments.update(
    { "_id" : ObjectId("4eb79ee1e60fc603788e7259"), 
     "Subsidiaries._id" : ObjectId("4eb79eeae60fc603788e7271") }, 
    { "$set" : { "Subsidiaries.$.Location" : "City" } } 
) 
+4

मेरे मामले में, यह कहता है, ** स्ट्रिंग फ़ील्ड नाम [$] ** का उपयोग करके सरणी में शामिल नहीं हो सकता है, हालांकि मैं उपरोक्त दस्तावेज़ देख सकता हूं और मेरा दस्तावेज़ बिल्कुल समान है। –