【发布时间】:2020-05-11 06:42:17
【问题描述】:
我正在使用 mongodb 数据库并希望在 2 collections 上应用 $lookup 但有特定条件。我有一个名为 Company 的集合,像这样
new Schema({
name: String,
benefit: String,
benefitDesc: String,
company_url: String,
logoUrl: String,
coverUrl: String,
desc: String,
createdAt: String,
categoryId: { type: Schema.Types.ObjectId, ref: 'categories' },
})
还有一个类似这样的名为 Referrallinks 的集合
new Schema({
referral_link: String,
referral_code: String,
isLink: Number,
offer_name: String,
offer_desc: String,
user_email: String,
companyId: { type: Schema.Types.ObjectId, ref: 'companies' },
addedByAdmin: { type: Boolean, default: true },
number_of_clicks: Number,
referral_country: String,
link_status: String,
categoryId: { type: Schema.Types.ObjectId, ref: 'categories' },
number_of_clicks: { type: Number, default: 0 },
createdAt: String,
updatedAt: String,
userId: { type: Schema.Types.ObjectId, ref: 'users' }
})
现在当我应用这个$lookup 查询时
Company.aggregate([{
$lookup: {
from: "referrallinks",
let: { company_id: "$_id" },
pipeline: [{
$match: {
$expr: {
$and: [
{ $eq: ["$$company_id", "$companyId"] },
{ $eq: ["$link_status", "Approved"] }
]
}
}
},
{
$lookup: {
from: "categories",
localField: "categoryId",
foreignField: "_id",
as: "category"
}
}
],
as: "referrals"
}
}])
所以我在每个公司的referral 对象的key 中获取category 对象。但我希望它在 referral 这样的对象之外
[
{name : '', benefit : '', benefiDesc : '', referrals : [], category : {}},
{name : '', benefit : '', benefiDesc : '', referrals : [], category : {}},
{name : '', benefit : '', benefiDesc : '', referrals : [], category : {}},
.....
]
我该怎么做?
【问题讨论】: