先上表结构:
giftkinds waitgets
我要根据waitgets的giftId关联查询giftkinds里的信息。
一开始主键外键搞错了,因为主集合是waitgets,所以转换字段数据类型时要该变主集合的类型。而且我还要根据uid过滤用户。所以写了下面的查询方式。
db.waitgets.aggregate([
{$match:{uid:"5ea84896ab117b1c9c33ba3d"}},
{
"$project": {
"giftId": {
"$toObjectId": "$giftId"
}
}
},
{
$lookup: {
from: "giftkinds",
localField: "giftId",
foreignField: "_id",
as: "child"
}
}
]);
查询的结果
在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"
}
}
])
网友评论