首页 > 解决方案 > 查找是否 field="x" 或注意?MongoDB数据库

问题描述

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

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

查询 find key1=B, key2=C(如果存在):

.find({'key1':B, {'key2':$exists{....}}})?

结果应该是:

[{id:3...},{id:4...}]

标签: mongodbpymongo

解决方案


如果您使用的是支持它的 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


推荐阅读