Sua tentativa de consulta usa a mesma "chave" duas vezes. Você não pode fazer isso em uma estrutura de objeto, pois está essencialmente "sobrescrevendo" o valor da mesma chave. Portanto, a consulta real considerada é apenas a "segunda" condição para essa chave.
Portanto, se você deseja ter várias condições para a mesma chave, use o
$and
operador:db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Ou, como todas as condições do MongoDB são realmente argumentos "e" por padrão, você também pode especificar
$eq
nesse caso:db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Observando aqui que não há nada de especial em
.aggregate()
aqui em si, pois é apenas a parte de "consulta" de base que está fazendo o trabalho de seleção de documentos. Observe também que com uma condição "positiva" presente ( o
$eq
) não é realmente necessário usar o $exists
já que você já está testando que pelo menos esse elemento precisa corresponder.