Uw zoekpoging gebruikt tweemaal dezelfde "sleutel". Je kunt dat niet doen in een objectstructuur, omdat je in wezen de waarde van dezelfde sleutel "overdrijft". Dus de eigenlijke zoekopdracht die in overweging wordt genomen, is slechts de "tweede" voorwaarde voor die sleutel.
Dus als je meerdere voorwaarden voor dezelfde sleutel wilt hebben, gebruik dan de $and
operator:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Of aangezien alle MongoDB-voorwaarden standaard "en" -argumenten zijn, kunt u ook $eq
in dit geval:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Hierbij opmerkend dat er niets bijzonders is aan .aggregate()
hier zelf, omdat het alleen het basis "query"-gedeelte is dat het werk van documentselectie doet.
Merk ook op dat met een "positieve" voorwaarde (de $eq
) is het niet echt nodig om de $exists
. te gebruiken aangezien je al aan het testen bent dat in ieder geval dat element moet overeenkomen.