Upaya kueri Anda menggunakan "kunci" yang sama dua kali. Anda tidak dapat melakukannya dalam struktur objek karena pada dasarnya Anda "menimpa" nilai dari kunci yang sama. Jadi kueri sebenarnya yang dipertimbangkan hanyalah kondisi "kedua" untuk kunci itu.
Jadi jika Anda ingin memiliki beberapa ketentuan untuk kunci yang sama, gunakan $and
operator:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Atau karena semua kondisi MongoDB benar-benar argumen "dan" secara default, Anda juga dapat menentukan $eq
dalam hal ini:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Perhatikan di sini bahwa tidak ada yang istimewa dari .aggregate()
di sini sendiri, karena hanya bagian "permintaan" dasar yang melakukan pekerjaan pemilihan dokumen.
Perhatikan juga, bahwa dengan kondisi "positif" ada ( $eq
) sebenarnya tidak perlu menggunakan $exists
karena Anda sudah menguji bahwa setidaknya elemen tersebut harus cocok.