यह अद्यतन क्वेरी 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 के साथ