Ditt sökförsök använder samma "nyckel" två gånger. Du kan inte göra det i en objektstruktur eftersom du i huvudsak "övertygar" värdet på samma nyckel. Så den faktiska frågan som betraktas är bara det "andra" villkoret för den nyckeln.
Så om du vill ha flera villkor för samma nyckel, använd sedan $and
operatör:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Eller eftersom alla MongoDB-villkor verkligen är "och"-argument som standard, kan du också ange $eq
i det här fallet:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Noterar här att det inte finns något speciellt med .aggregate()
här själv, eftersom det bara är den grundläggande "fråga"-delen som gör jobbet med dokumentval.
Observera också att med ett "positivt" villkor närvarande ( $eq
) är det egentligen inte nödvändigt att använda $exists
eftersom du redan testar att åtminstone det elementet måste matcha.