Twoja próba zapytania używa tego samego „klucza” dwa razy. Nie możesz tego zrobić w strukturze obiektu, ponieważ zasadniczo „nadpisujesz” wartość tego samego klucza. Tak więc rozważane zapytanie jest tylko „drugim” warunkiem dla tego klucza.
Jeśli więc chcesz mieć wiele warunków dla tego samego klucza, użyj $and
operator:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Lub ponieważ wszystkie warunki MongoDB są domyślnie argumentami „i”, możesz również określić $eq
w tym przypadku:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Zauważając, że nie ma nic szczególnego w .aggregate()
tutaj sam, ponieważ jest to tylko podstawowa część "zapytania", która wykonuje pracę wyboru dokumentu.
Zauważ również, że z obecnym warunkiem "dodatnim" ( $eq
) nie jest konieczne używanie $exists
ponieważ już testujesz, że przynajmniej ten element musi pasować.