我的子文档在父 userFolder 被删除时无法存档。 来自子文档的链接设置为“组”字段,这是其父文档的 objectID 的字符串版本。
如何进行聚合,以便为我提供在 userFolder 集合的 objectID 中找不到“组”值的文档列表
答案 0 :(得分:1)
这样的事情应该可行,您需要根据需要替换集合和字段名称:
db.child_collection.aggregate([
{
$lookup: {
from: "parent_collection",
let: {
parent_group: {
$toObjectId: "$group"
}
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$_id",
"$$parent_group"
]
}
}
}
],
as: "parent_docs"
}
},
{
$match: {
"parent_docs": {
$size: 0
}
}
}
])
在 $lookup stage 之后,每个文档都会有一个 parent_docs
数组。如果子文档具有未删除的父文档,则该数组将具有一个元素。否则它是孤立的,数组将为空。您对查找孤立文档感兴趣,因此我们过滤大小为 0
的数组。