查找field =“ x”还是注意到? mongoDB

时间:2019-02-11 23:27:15

标签: mongodb pymongo

我将如何在以下位置找到记录

"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...}]

1 个答案:

答案 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