आपका क्वेरी प्रयास एक ही "कुंजी" का दो बार उपयोग करता है। आप ऑब्जेक्ट संरचना में ऐसा नहीं कर सकते क्योंकि आप अनिवार्य रूप से उसी कुंजी के मान को "ओवरवाइटिंग" कर रहे हैं। तो माना गया वास्तविक प्रश्न उस कुंजी के लिए केवल "दूसरी" शर्त है।
इसलिए यदि आप एक ही कुंजी के लिए कई शर्तें रखना चाहते हैं, तो का उपयोग करें। $and
ऑपरेटर:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
या चूंकि सभी MongoDB स्थितियां वास्तव में डिफ़ॉल्ट रूप से "और" तर्क हैं, आप $eq
इस मामले में:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
यहां यह ध्यान देने योग्य है कि .aggregate()
. के बारे में कुछ खास नहीं है यहाँ ही, क्योंकि यह केवल आधार "क्वेरी" भाग है जो दस्तावेज़ चयन का कार्य कर रहा है।
यह भी ध्यान दें, कि एक "सकारात्मक" स्थिति मौजूद है ( $eq
) $exists
. का उपयोग करना वास्तव में आवश्यक नहीं है चूंकि आप पहले से ही परीक्षण कर रहे हैं कि कम से कम उस तत्व का मिलान होना चाहिए।