クエリの試行では、同じ「キー」が2回使用されます。同じキーの値を本質的に「上書き」しているため、オブジェクト構造でこれを行うことはできません。したがって、考慮される実際のクエリは、そのキーの「2番目の」条件にすぎません。
したがって、同じキーに対して複数の条件を設定する場合は、を使用します。 $and
演算子:
db.collection.aggregate([
{ "$match": {
"$and": [
{ "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
{ "genericParams.key": "third_sms_email_time" }
]
},
// other stages
})
または、すべてのMongoDB条件はデフォルトで実際には「and」引数であるため、 $eq
この場合:
db.collection.aggregate([
{ "$match": {
"genericParams.key": {
"$ne": "manual_refund_processed",
"$eq": "third_sms_email_time"
}
}},
// other stages
])
ここで、.aggregate()
について特別なことは何もないことに注意してください。 ここでは、ドキュメント選択の作業を行うのは基本的な「クエリ」部分にすぎないためです。
また、「正の」条件が存在することにも注意してください($eq
)$exists
を使用する必要はありません 少なくともその要素が一致する必要があることをすでにテストしているためです。