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]
                        }]
                }
            }
        ])

它给了我一个空数组(在前面尝试过),但我也想要那些没有创建映射的数组。