mongodb - 查找是否 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...}]
解决方案
如果您使用的是支持它的 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
推荐阅读
- nginx - ffmpeg 拉取本地 rtmp 流失败
- python - 通过在 Python 3.7 中逐段计算单词的自定义数据结构
- c++ - 我应该将 malloc() 用于链接列表吗?
- checkbox - 如何使 Google 查询仅从两个不同的列中提取 TRUE 值
- visual-c++ - 为什么在编译向量时VS2017和VS代码不同?
- android - 使用自定义源代码编译和更新 Flutter 的 Dart Dart 虚拟机
- html - ItextSharp 未封闭标签
- windows - 在 windows 上使用 exec.Command 进行 noverify
- excel - 如何将数据粘贴到 VBA 的特定行中?
- c - 无法打印函数返回的字符串