在查找localField中使用_id对象的mongodb查询

时间:2016-03-18 06:21:44

标签: mongodb

我们正在尝试将_id对象与不起作用的mId foreignfield匹配。 寻找mondodb文档。他们对此没有任何意义。是否可以使用mongodb查询?

_id作为文档中的对象

   "_id" : ObjectId("56ab6663d69d2d1100c074db"),

mId as document in document

"mId" : "56ab6663d69d2d1100c074db",

查询如下:

 collection.aggregate([
                {
                  $lookup:
                    {
                      from: "category",
                      localField: "_id",
                      foreignField: "mId",
                      as: "categories"
                    }
               }
            ])

UDPATE

作为总结,mongodb不支持$ lookup中的类型强制。所以要在上面工作,我必须将_id和mId作为 ObjectId 键入文档本身才能使其正常工作。

2 个答案:

答案 0 :(得分:0)

你可以用mid加入id。虽然$ lookup不支持强制,但使用$ project管道阶段并首先将所有mid转换为Object Id,然后尝试$ lookup

答案 1 :(得分:0)

从Mongodb 4.0开始,您可以使用$toString聚合运算符将ObjectId转换为字符串。

Jira问题:Allow $lookup between ObjectId (_id.str) and string

现在您的查询应如下所示:

collection.aggregate([
  { 
    $addFields: { "_id": { "$toString": "$_id" } }
  },
  {
    $lookup: {
      from: "category",
      localField: "_id",
      foreignField: "mId",
      as: "categories"
    }
  }
])