Mongo查找加入objectid无法正常工作?

时间:2016-08-09 00:56:27

标签: mongodb mongodb-query

对于收藏品:

 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" }
}])

产生一个空集。

查询应生成两行结果。

我该如何解决这个问题?

1 个答案:

答案 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>
     }
}

希望它有帮助!