Sim*_* L. 3 mongodb mongodb-query spring-data-mongodb
我在 MongoDB 中有一些文档,其中有其他嵌套文档都带有“活动”字段。例如 :
{
"id": "PRODUCT1",
"name": "Product 1",
"active": true,
"categories": [
{
"id": "CAT-1",
"active": true,
"subcategories": [
{
"id": "SUBCAT-1",
"active": false
},
{
"id": "SUBCAT-2",
"active": true
}
]
},
{
"id": "CAT-2",
"active": false,
"subcategories": [
{
"id": "SUBCAT-3",
"active": true
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找到所有文档但只保留“活动”嵌套文档。
这是我想要的结果:
{
"id": "PRODUCT1",
"name": "Product 1",
"active": true,
"categories": [
{
"id": "CAT-1",
"active": true,
"subcategories": [
{
"id": "SUBCAT-2",
"active": true
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
知道我事先不知道文档架构。这就是为什么我需要一种有条件的通配符投影......(即*.active=true)。这是可能的还是必须在服务器端完成?
使用$redact.
db.collection.aggregate(
[
{ $redact: {
$cond: {
if: { $eq:["$active", true] },
then: "$$DESCEND",
else: "$$PRUNE"
}
}
}
]
);
Run Code Online (Sandbox Code Playgroud)
https://mongoplayground.net/p/7UMphkH5OWn
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |