如果文档集合包含:
{ _id: "1", name : "doc1", myDocRefId : "" }
{ _id: "2", name : "doc2", myDocRefId : "" }
{ _id: "3", name : "doc3", myDocRefId : "1" }
我想构造一个聚合,该聚合只返回通过myDocRefId字段被其他任何文档引用的文档不。对于这个集合,我想返回:
{ _id: "2", name : "doc2", myDocRefId : "" }
{ _id: "3", name : "doc3", myDocRefId : "1" }
在汇总中删除了文档1,因为文档3引用了它。
这如何在聚合管道中完成?
答案 0 :(得分:1)
尝试这个:
db.collection.aggregate([
{
$lookup: {
from: "collection",
localField: "_id",
foreignField: "myDocRefId",
as: "tmp"
}
},
{
$match: {
tmp: {
$size: 0
}
}
},
{
$unset: "tmp"
}
])