आप किसी सेट में जोड़ने के लिए $addToSet का उपयोग यह सुनिश्चित करने के लिए कर सकते हैं कि कोई डुप्लिकेट सरणी तत्व नहीं है, लेकिन यह आपके "अपडेटिंग" मामले के लिए काम नहीं करेगा।
आप जो चाहते हैं उसे करने के लिए, आपको अपनी डेटा संरचना को कुछ इस तरह बदलना होगा:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"component_id" : 1,
"_locales" : {
"nl_NL" : {
"url" : "dutch"
}
}
}
अब आप nl_NL लोकेल पर केवल:
. के साथ एक अपडेट कर सकते हैंdb.components.update( { component_id: 1 }, { $set: { '_locales.nl_NL.url' : 'new url' } }, true );
और एक नया लोकेल भी काम करेगा, जैसे कि:
db.components.update( { component_id: 1 }, { $set: { '_locales.en_US.url' : 'American' } }, true );
हो सकता है कि आप लोकेल को नेस्टेड ऑब्जेक्ट के हिस्से के रूप में रखने पर विचार करना चाहें, जैसे कि:
{
"_id" : ObjectId("4f9519d6684c8b1c9e72e367"),
"component_id" : 1,
"_locales" : {
"nl_NL" : {
"url" : "dutch"
"locale" : "nl_NL"
}
}
}
इससे कुछ मामलों में डेटा पुनर्प्राप्त करना आसान हो जाता है।