Il tuo tentativo di query utilizza la stessa "chiave" due volte. Non puoi farlo in una struttura di oggetti poiché stai essenzialmente "sovrascrivendo" il valore della stessa chiave. Quindi la query effettiva considerata è solo la "seconda" condizione per quella chiave.
Quindi, se vuoi avere più condizioni per la stessa chiave, usa $and
operatore:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Oppure, poiché tutte le condizioni MongoDB sono in realtà argomenti "e" per impostazione predefinita, puoi anche specificare $eq
in questo caso:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Notando qui che non c'è niente di speciale in .aggregate()
qui stesso, in quanto è solo la parte "query" di base che sta facendo il lavoro di selezione del documento.
Si noti inoltre che con una condizione "positiva" presente ( $eq
) non è proprio necessario utilizzare $exists
poiché stai già verificando che almeno quell'elemento deve corrispondere.