यदि फ़ील्ड किसी सरणी का सदस्य है, तो उसे चुनकर आप उन सभी का चयन कर रहे हैं।
{ar :[{"a" : 1}, {"a" : 2}]}
"$ar.a" = [1 ,2]
साथ ही आप अपडेट ऑपरेटरों को एकत्रीकरण के साथ नहीं मिला सकते हैं, आप $sites.$.energy_consumption
जैसी चीज़ों का उपयोग नहीं कर सकते हैं , यदि आप एकत्रीकरण कर रहे हैं तो आपको केवल $match
अपवाद के साथ, कुल ऑपरेटरों का उपयोग करना होगा चरण जहां आप क्वेरी ऑपरेटरों का उपयोग कर सकते हैं।
प्रश्न
$setField
. का उपयोग करके आप से थोड़ा अलग वैकल्पिक समाधान- मुझे लगता है कि यह तेज़ होगा, लेकिन शायद थोड़ा अंतर होगा
- जावास्क्रिप्ट का उपयोग करने की कोई आवश्यकता नहीं है, यह धीमा हो जाएगा
- यह है>=MongoDB 5 समाधान,
$setField
नया ऑपरेटर है
aggregate(
[{"$set":
{"sites":
{"$map":
{"input":"$sites",
"in":
{"$setField":
{"field":"new_field",
"input":"$$this",
"value":"$$this.energy_consumption"}}}}}}]
)