我有一份如下形式的文件
{
"_id": "5c9a53b348a0ac000140b5f9",
"e": [
{
"_id": "d6c74cd5-5808-4b0c-b857-57ddbcc72ce5",
"isDeleted": true
},
{
"_id": "d6c74cd5-5808-4b0c-b857-57ddbcc72ce6",
"isDeleted": false
}
]
}每个文档上都有一个元素列表,每个元素都可能被删除,也可能不被删除。默认情况下,我不想返回已删除的数据。现在,我在服务器端过滤它们,但这仍然意味着很多数据被不必要地传输。有可能排除数据库中的这些数据吗?
我已经看过$elemMatch了,但是它只返回一个值,所以它看起来不是适合这个任务的工具。
是否有一种方法可以使用嵌套文档数组来投影文档,以只包括那些符合特定条件的子文档?
发布于 2019-03-26 17:08:27
您可以在这里使用$filter聚合
db.collection.aggregate([
{ "$addFields": {
"e": {
"$filter": {
"input": "$e"
"cond": { "$eq": ["$$this.isDeleted", true] }
}
}
}}
])https://stackoverflow.com/questions/55362514
复制相似问题