आप "ऑब्जेक्ट्स की सरणी" पैटर्न का उपयोग कर रहे हैं। आप स्थितीय ऑपरेटर का उपयोग कर सकते हैं, यह कुछ इस तरह दिखना चाहिए:
coll.update( {'_id':'2', 'users._id':'2'}, {$set:{'users.$':{ "_id":2,"name":"name6",... }}}, false, true)
मेरे अनुभव में, "ऑब्जेक्ट्स की सरणी" पैटर्न इष्टतम नहीं है यदि ऑब्जेक्ट्स में प्राकृतिक आईडी है। आपके मामले में, इसे निम्न के रूप में मॉडल किया जा सकता है:
{
"_id" : "2",
"users" :
{ "1" : { "name" : "name1", "xyz..." : "xyz1..." },
"2" : { "name" : "name2", "xyz..." : "xyz2..." }
}
"name" : "main name"
}
इस मामले में आप अपने इच्छित आइटम को आसानी से अपडेट करने के लिए डॉट नोटेशन का उपयोग कर सकते हैं।
var newValue = { "name" : "name6", "xyz..." : "xyz5...", "morefields..." : "fields..." };
coll.update({_id: 2}, { $set: { "users.2" : newValue } });