Ihr Abfrageversuch verwendet denselben "Schlüssel" zweimal. In einer Objektstruktur ist dies nicht möglich, da Sie im Wesentlichen den Wert desselben Schlüssels "überschreiben". Die tatsächlich betrachtete Abfrage ist also nur die "zweite" Bedingung für diesen Schlüssel.
Wenn Sie also mehrere Bedingungen für denselben Schlüssel haben möchten, verwenden Sie den $and
Betreiber:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Da alle MongoDB-Bedingungen standardmäßig „und“-Argumente sind, können Sie auch $eq
in diesem Fall:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Beachten Sie hier, dass .aggregate()
nichts Besonderes ist hier selbst, da es nur der grundlegende "Abfrage"-Teil ist, der die Arbeit der Dokumentenauswahl erledigt.
Beachten Sie auch, dass bei einer "positiven" Bedingung ( der $eq
) ist es nicht wirklich notwendig, den $exists
zu verwenden da Sie bereits testen, dass zumindest dieses Element übereinstimmen muss.