आप उस वाइल्डकार्ड $ . के साथ बहुत गहराई तक गए हैं . आप Fields . में किसी आइटम के लिए मिलान करते हैं सरणी, ताकि आप उस पर पहुँच प्राप्त कर सकें:Fields.$ . यह एक्सप्रेशन आपके Fields . में पहला मैच लौटाता है सरणी, ताकि आप Fields.$.Field . द्वारा इसके फ़ील्ड तक पहुँच सकें या Fields.$.Result ।
अब, update को अपडेट करते हैं :
db.test.update({
"Fields.Field": "Lot No"
}, {
$addToSet: {
"Fields.$.Rules": {
'item_name': "my_item_two",
'price':1
}
}
}, false, true);
कृपया ध्यान दें कि मैंने query को छोटा कर दिया है क्योंकि यह आपकी अभिव्यक्ति के बराबर है।