Node.js mongodb未知顶级运算符:$function nodejs
我试图只提取那些用户未选择的集合。 这是我的密码Node.js mongodb未知顶级运算符:$function nodejs,node.js,mongodb,Node.js,Mongodb,我试图只提取那些用户未选择的集合。 这是我的密码 return await Campaign.aggregate([ { $lookup: { from:"influncer_campaign_mapping", localField: "campaignId",
return await Campaign.aggregate([
{
$lookup: {
from:"influncer_campaign_mapping",
localField: "campaignId",
foreignField:"campaignId",
as: "icmapping"
}
},
{$unwind:"$icmapping"},
{
$match: {$function:{
body: function(icmapping) {
if(icmapping != null || icmapping != undefined){
return {"icmapping.userId":{$ne:"ccdc7d1a-9cdb-4768-b8c1-0446e35576fb"}}
}else{ return null}
},
args: [ "$icmapping" ],
lang: "js"
}
}
}
])
我的映射表
{
influncerCampaignMappingId: { type: String, require: true },
userId: { type: String, require: true },
campaignId: { type: String, require: true },
// isSelected: { type: Boolean, require: true, default: true },
isDeleted: { type: Boolean, require: true },
deletedDate: { type: Date, require: true },
},
这是活动表,我在这里存储活动列表
{
campaignId: { type: String, require: true },
name: { type: String, require: true },
image: { type: String, require: true },
serviceName: { type: String, require: true },
description: { type: String, require: true },
categoryId: [{ type: String }],
keywords: [{ type: String }]
}
实际上,我考虑的是活动表中的活动ID和用户表中的用户ID,并将其插入到映射表中。
现在的目标是仅实现用户以前未选择的集合(列表),
这样他们就可以只看到那些他们还没有选择的活动(列表)。这样试试,希望有帮助
return await Campaign.aggregate([{
$lookup: {
from: "influncer_campaign_mapping",
localField: "campaignId",
foreignField: "campaignId",
as: "icmapping"
}
},
{
$unwind: "$icmapping"
},
{
$match: {
$and:
[{
$ne: ["icmapping.userId", "ccdc7d1a-9cdb-4768-b8c1-0446e35576fb"],
$ne: ["icmapping.userId", null]
}]
}
}
])
它给了我一个空数组(在前面尝试过),但我也想要那些没有创建映射的数组。