对于收藏品:
data:
{ "_id" : ObjectId("57a"), "rep" : ObjectId("570"), "label" : "pat" }
{ "_id" : ObjectId("57b"), "rep" : ObjectId("571"), "label" : "pat" }
rep:
{ "_id" : ObjectId("570") }
{ "_id" : ObjectId("571") }
查询
db.rep.aggregate([{ $lookup:
{from: "data", localField:"rep", foreignField:"_id", as: "in_common" }
}])
产生一个空集。
查询应生成两行结果。
我该如何解决这个问题?
答案 0 :(得分:7)
您需要修改您的查询,如下所示
db.data.aggregate([ { $lookup: {from: "rep", localField:"rep", foreignField:"_
id", as: "in_common" }}])
此查询将为您提供两条记录。
无法获取记录的原因:在您的收藏中,您没有将data._id映射到rep._id,而您拥有从rep._id到data.rep的映射< / p>
https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
{
$lookup:
{
from: <collection to join>,
localField: <field from the input documents>,
foreignField: <field from the documents of the "from" collection>,
as: <output array field>
}
}
希望它有帮助!