我将如何在以下位置找到记录
"key1"="val1" and
1) if "key2" exists ->"key2"="val2"
2) if "key2" doesn't exist ignore it in search. Use only "key1"="val1"
输入数据:
{id:1, key1: A}
{id:2, key1: B, key2: D}
{id:3, key1: B, key2: C}
{id:4, key1: B}
查询查找键1 = B,键2 = C(如果存在):
.find({'key1':B, {'key2':$exists{....}}})?
结果应为:
[{id:3...},{id:4...}]
答案 0 :(得分:0)
如果您使用的是支持它的mongo版本,则可以使用$in
运算符,并将其设为null:{ key1: val1, key2: {$in: [val2, null] }}
。 (我知道3.6支持这一点,但是我不确定何时添加它)。
您还可以使用$ or运算符:{key1: val1, $or: [{key2: val2}, {key2: {$exists: false}]}
https://docs.mongodb.com/manual/reference/operator/query/or/ https://docs.mongodb.com/manual/reference/operator/query/in