聚合`$ lookup`在MongoDB中不起作用

时间:2018-07-12 06:30:58

标签: mongodb mongoose mongodb-query aggregation-framework

当我在集合中使用$ lookup时,我得到的输出是错误的

这是输出:

{"_pipeline":[{"$project":{"fulldetails":{"$concat":["$associate_name"," ","$associate_no"]},"outlets":"$outl"}},{"$lookup":{"from":"outlets","localField":"_id","foreignField":"associate_id","as":"outl"}}],"options":{}}

这是查询

  var data=Associate.aggregate([{
        $project: {
          "fulldetails": {
            $concat: ["$associate_name", " ", "$associate_no"]
          },
          "outlets": "$outl"
        }
      }, {
        $lookup: {
          from: "outlets",
          localField: "_id",
          foreignField: "associate_id",
          as: "outl"
        }
      }])

预先感谢

1 个答案:

答案 0 :(得分:1)

外地字段和本地字段必须具有相同的类型,而只有$ lookup可以工作

以您的情况

本地字段为 _id

外国字段为 associate_id

  

如果_id是ObjectID,associate_id是ObjectID,则只有它可以工作

     

如果_id是String且associate_id是String,则只有它能起作用

     

如果_id是ObjectID,associated_id是String,则它将不起作用

     

如果_id为String且associate_id为ObjectID,则它将不起作用