先上表结构:
image.png

image.png

我要根据waitgets的giftId关联查询giftkinds里的信息。
一开始主键外键搞错了,因为主集合是waitgets,所以转换字段数据类型时要该变主集合的类型。而且我还要根据uid过滤用户。所以写了下面的查询方式。


db.waitgets.aggregate([
    {$match:{uid:"5ea84896ab117b1c9c33ba3d"}},
    {
    "$project": {
        "giftId": {
            "$toObjectId": "$giftId"
         }
    }
    },
     {
        $lookup: {
          from: "giftkinds", 
          localField: "giftId",
          foreignField: "_id", 
          as: "child"
          }
     }
]);

image.png
在egg.js的项目里,副集合的名字也要小写才行。

      let waitGet = await ctx.model.WaitGet.aggregate([
            { $match: { uid: '5ea84896ab117b1c9c33ba3d' } },
            {
                "$project": {
                    "giftId": {
                        "$toObjectId": "$giftId"
                    }
                }
            },
            {
                $lookup: {
                  from: "giftkinds", 
                  localField: "giftId",
                  foreignField: "_id", 
                  as: "child"
                  }
             }
        
        ])

image.png


Kason
209 声望6 粉丝