इसलिए मैं उस क्षेत्र को देखने के लिए क्वेरी को बदलकर इस समस्या को हल करने में सक्षम था जो एक ही समय में अपडेट हो जाता है लेकिन घोंसला नहीं है। मुझे लगता है कि नेस्टेड फ़ील्ड की जांच करने में समस्या यह है कि ChangeEvent का updateDescription संपत्ति में वास्तविक नेस्टेड वस्तु शामिल नहीं है जो बदल गई है; इसके बजाय इसमें परिवर्तन का डॉट-नोटेशन प्रतिनिधित्व शामिल है। इसलिए यदि आप अपडेट 2 . देखें तो मेरी पोस्ट में आप देखेंगे कि updatedFields इसका यह मान है:{\"someOtherField\":310,\"message.fansNo\":1... के बजाय {\"someOtherField\":310,\"message\":{\"fansNo\":1... . message.fansNo . का उपयोग करके $match क्वेरी में, Mongo इस ऑब्जेक्ट आकार की तलाश करेगा:{\"message\":{\"fansNo\":1... , जो इस मामले में मेल नहीं खाता। . message.fansNo . में मेरी मैच अभिव्यक्ति में, लेकिन मैं इसे काम नहीं कर सका (देखें यह धागा
)।
तो मेरे लिए काम करने वाला "समाधान" वास्तव में सिर्फ एक कामकाज है जो मेरे विशिष्ट उपयोग-मामले के लिए काम करता है:ऐसा होता है कि someOtherField हमेशा message.fansNo . के साथ अपडेट किया जाता है , और someOtherField नेस्टेड नहीं है। इसलिए मैं someOtherField . से मेल खा सकता हूं घोंसले की चिंता किए बिना। मूल रूप से यह मिलान अभिव्यक्ति मुझे वांछित परिणाम देती है:
{
"$or": [
{
"updateDescription.updatedFields.someOtherField": {"$exists":true}
},
{
"updateDescription.updatedFields.someOtherField":{"$exists":true}
}
]
}
आशा है कि यह किसी और की मदद करेगा!