Mongodb 如何构造聚合管道以根据其他文档中的字段值过滤文档?
如果文档集合包含:Mongodb 如何构造聚合管道以根据其他文档中的字段值过滤文档?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,如果文档集合包含: { _id: "1", name : "doc1", myDocRefId : "" } { _id: "2", name : "doc2", myDocRefId : "" } { _id: "3", name : "doc3", myDocRefId : "1" } 我想构造一个聚合,只返回通过myDocRefId字段被任何其他文档引用的文档而不是。对于本系列,我想返回: { _id: "2", name : "doc2", myDocRefId : "" } { _
{ _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引用了它
如何在聚合管道中实现这一点?试试这个:
db.collection.aggregate([
{
$lookup: {
from: "collection",
localField: "_id",
foreignField: "myDocRefId",
as: "tmp"
}
},
{
$match: {
tmp: {
$size: 0
}
}
},
{
$unset: "tmp"
}
])
|