首页 文章

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

提问于
浏览
7

我们正在尝试将_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

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

  • 0

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

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


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

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

相关问题