mql - 如何结合 Mongo $in 和 $cond
问题描述
我有一个看起来像这样的集合(每个数组元素是 1 个文档):
[
{
"_id": 1,
"title": "title",
"data": [
{
"_id": 41,
"name": "test 1"
},
{
"_id": 42,
"name": "test 2"
},
{
"_id": 43,
"name": "test 3"
}
]
},
{
"_id": 1,
"title": "title 2",
"data": [
{
"_id": 44,
"name": "test 4"
},
{
"_id": 45,
"name": "test 5"
}
]
},
]
我想做的是使用$redact
where data._id is $in
a array of过滤掉所有文档[41, 42]
。因此,如果 data._id 曾经等于 41 或 42,则应保留整个文档。否则,它应该被修剪。
{
$cond: {
if: {
$in: [
"$data._id",
[ 41, 42 ]
]
},
then: "$$KEEP",
else: "$$PRUNE"
}
}
$redact
但是,当我在 Compass 中使用舞台时,上面的查询不会返回任何内容。
解决方案
推荐阅读
- python - 防止 pandas 将 datetime 对象转换为 pandas Timestamps
- javascript - javascript 中少于 5 行的 RGB 到 Hex 转换器
- mysql - 如何在 sql 中使用 YEARWEEK 获取前一周?
- acumatica - 为什么我的弹出面板没有显示我的控件?
- function - 如何制作验证名字和姓氏输入的函数 - Kotlin
- visual-studio-2019 - VS2019 将 post build 事件移动到 post publish 事件?
- javascript - 在 try...catch... 中迭代数组最终导致“MongoError:无法使用已结束的会话”
- ios - RxSwift 无法识别 tableView modelSelected 无需长按
- c++ - C++ 入门第 5 版。函数模板重载
- python - 我做错了什么,我不断收到“typererror: can only concatenate str (not 'int') to str”?