कुछ और शोध के बाद, ऐसा लगता है कि किसी सरणी के भीतर सरणी को संशोधित करने का एकमात्र तरीका कुछ बाहरी तर्क के साथ उस तत्व की अनुक्रमणिका को ढूंढना होगा जिसे मैं बदलना चाहता हूं। ऐसा करने के लिए प्रत्येक परिवर्तन के लिए अनुक्रमणिका का पता लगाने के लिए एक खोज क्वेरी और फिर सरणी को संशोधित करने के लिए एक अद्यतन क्वेरी की आवश्यकता होगी। यह सबसे अच्छा तरीका नहीं लगता।
एक 2010 JIRA मामले से लिंक करें जिसमें कई स्थितीय तत्वों का अनुरोध किया गया हो...
चूंकि मुझे इस सुविधा की आईडी हमेशा पता रहेगी, इसलिए मैंने अपनी दस्तावेज़ संरचना को संशोधित करने का विकल्प चुना है।
{
"_id" : "v5y8nggzpja5Pa7YS",
"name" : "Example",
"display_name" : "EX1",
"groups" : [
{
"_id" : "s86CbNBdqJnQ5NWaB",
"name" : "Group1",
"display_name" : "G1",
"features" : {
"1" : {
type : "blog",
name : "[blog name]"
owner_id : "ga5YgvP5yza7pj8nS"
},
}
},
]
},
नई संरचना के साथ, निम्नलिखित तरीके से परिवर्तन किए जा सकते हैं:
db.orgs.update({_id: "v5y8nggzpja5Pa7YS", "groups._id": "s86CbNBdqJnQ5NWaB"}, {$set: {"groups.$.features.1.name":"Blog Test 1"}});