यह अद्यतन क्वेरी JSON को नेस्टेड सरणी में जोड़ती है, "SERVICES.VERSIONS.GROUPS.CUSTOMERS" , निर्दिष्ट फ़िल्टर शर्तों के आधार पर। ध्यान दें कि आपकी फ़िल्टर स्थितियां अपडेट ऑपरेशन को विशिष्ट सरणी (नेस्टेड सरणियों के) पर निर्देशित करती हैं।
// JSON document to be added to the CUSTOMERS array
new_cust = {
"CUSTOMER_CONFIG_ID": "6",
"ACTIVATION_DATE": "31-03-2020",
"STATUS": "Y"
}
db.collection.update(
{
"SERVICE_CATEGORY": "COMMON_SERVICE",
"SERVICES.SERVICE_NAME": "Authentication Service",
"SERVICES.VERSIONS.VERSION_NAME": "AuthenticationServiceV6_3"
},
{
$push: { "SERVICES.$[s].VERSIONS.$[v].GROUPS.$[g].CUSTOMERS": new_cust }
},
{
multi: true,
arrayFilters: [
{ "s.SERVICE_NAME": "Authentication Service" },
{ "v.VERSION_NAME": "AuthenticationServiceV6_3" },
{ "g.GROUP_NAME": "TEST GROUP" }
]
}
);
नेस्टेड सरणियों के साथ दस्तावेज़ों को अपडेट करते समय ध्यान देने योग्य कुछ बातें एक से अधिक स्तर के घोंसले के शिकार।
- सभी स्थितीय ऑपरेटर का उपयोग करें
$[]और फ़िल्टर किए गए पोजिशनलऑपरेटर$[<identifier>], और नहीं$स्थितीय ऑपरेटर। फ़िल्टर किए गए स्थितीय ऑपरेटर के साथarrayFilters. का उपयोग करके सरणी फ़िल्टर शर्तों को निर्दिष्ट करें पैरामीटर। ध्यान दें कि यह आपके अपडेट को विशिष्ट नेस्टेड सरणी को लक्षित करने के लिए निर्देशित करेगा। - फ़िल्टर किए गए स्थितीय ऑपरेटर के लिए
$[<identifier>], पहचानकर्ता को छोटे अक्षर से शुरू होना चाहिए और उसमें केवल अल्फ़ान्यूमेरिक वर्ण होने चाहिए।
संदर्भ:
- ऐरे अपडेटऑपरेटर
- db.collection.update() arrayFilters के साथ