Lần truy vấn của bạn sử dụng cùng một "khóa" hai lần. Bạn không thể làm điều đó trong một cấu trúc đối tượng vì về cơ bản bạn đang "ghi đè" giá trị của cùng một khóa. Vì vậy, truy vấn thực tế được xem xét chỉ là điều kiện "thứ hai" cho khóa đó.
Vì vậy, nếu bạn muốn có nhiều điều kiện cho cùng một khóa, hãy sử dụng $and
nhà điều hành:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
Hoặc vì tất cả các điều kiện MongoDB thực sự là đối số "và" theo mặc định, bạn cũng có thể chỉ định $eq
trong trường hợp này:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
Lưu ý rằng không có gì đặc biệt về .aggregate()
ở đây, vì nó chỉ là phần "truy vấn" cơ sở đang thực hiện công việc lựa chọn tài liệu.
Cũng lưu ý rằng có điều kiện "tích cực" ($eq
) không thực sự cần thiết để sử dụng $exists
vì bạn đang kiểm tra nên ít nhất phần tử đó cần phải khớp.