Вашият опит за заявка използва един и същ „ключ“ два пъти. Не можете да направите това в обектна структура, тъй като по същество "преузнавате" стойността на същия ключ. Така че действително разглежданата заявка е само "второто" условие за този ключ.
Така че, ако искате да имате няколко условия за един и същ ключ, използвайте $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
тъй като вече тествате, че поне този елемент трябва да съвпада.