先上表结构:ui
我要根据waitgets的giftId关联查询giftkinds里的信息。
一开始主键外键搞错了,由于主集合是waitgets,因此转换字段数据类型时要该变主集合的类型。并且我还要根据uid过滤用户。因此写了下面的查询方式。spa
db.waitgets.aggregate([ {$match:{uid:"5ea84896ab117b1c9c33ba3d"}}, { "$project": { "giftId": { "$toObjectId": "$giftId" } } }, { $lookup: { from: "giftkinds", localField: "giftId", foreignField: "_id", as: "child" } } ]);
在egg.js的项目里,副集合的名字也要小写才行。3d
let waitGet = await ctx.model.WaitGet.aggregate([ { $match: { uid: '5ea84896ab117b1c9c33ba3d' } }, { "$project": { "giftId": { "$toObjectId": "$giftId" } } }, { $lookup: { from: "giftkinds", localField: "giftId", foreignField: "_id", as: "child" } } ])