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

Ayi*_*jla 4 mongoose mongodb 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":{}}
Run Code Online (Sandbox Code Playgroud)

这是查询

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

提前致谢

Rat*_*mar 5

外部字段和本地字段的类型必须相同,只有 $lookup 才能工作

在你的情况下

本地字段是_id

外部字段是Associate_id

如果 _id 是 ObjectID 并且 Associate_id 是 ObjectID 那么只有它才有效

如果 _id 是 String 并且 Associate_id 是 String 那么只有它才有效

如果 _id 是 ObjectID 并且 Associate_id 是 String 那么它将不起作用

如果 _id 是 String 并且 Associate_id 是 ObjectID 那么它将不起作用