"dot notation" का प्रयोग करें और अद्यतन भाग में स्थितीय ऑपरेटर। मुख्य प्रतिनिधित्व के लिए "डॉट नोटेशन" फॉर्म से मेल खाने के लिए अपना इनपुट भी बदलें:
# Transform to "dot notation" on explicit field
for key in data:
data["mylist.$." + key] = data[key]
del data[key]
# Basically makes
# {
# "mylist.$.data1": "new lorem",
# "mylist.$.data3": "goldeneye"
# }
db.testing.find_and_modify(
query = {"_id": "12345", 'mylist.nested_id' : "1"},
update = { "$set": data }
)
ताकि $
. को स्थानान्तरित किया जा सके अद्यतन के क्वेरी भाग से वास्तविक मिलान तत्व स्थिति में। मेल खाने वाले ऐरे एलीमेंट को अपडेट किया जाएगा और "डॉट नोटेशन" का इस्तेमाल करने से केवल बताए गए फ़ील्ड ही प्रभावित होंगे।
मुझे नहीं पता कि इस संदर्भ में "सेवा" का क्या अर्थ है और मैं इसे केवल "प्रतिलेखन त्रुटि" के रूप में मान रहा हूं क्योंकि आप स्पष्ट रूप से स्थिति में एक सरणी तत्व से मेल खाने की कोशिश कर रहे हैं।
यह अधिक साफ-सुथरा हो सकता है, लेकिन इससे आपको सामान्य विचार मिल सकता है।