Node.js mongodb/mongoose将聚合$lookup设置为可选
我有一个关于mongodb的问题Node.js mongodb/mongoose将聚合$lookup设置为可选,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一个关于mongodb的问题 Job.aggregate([ {$match: {created_by: req.params.userId }}, {$lookup: { from: "users", localField: "applicant._id", foreignField: "_id", as: "applicant" }}, {$unwind: '$applicant'}
Job.aggregate([
{$match: {created_by: req.params.userId }},
{$lookup: {
from: "users",
localField: "applicant._id",
foreignField: "_id",
as: "applicant" }},
{$unwind: '$applicant'}
])
当申请人id为空时,它将不起作用。这不是我想要的,如何使$lookup成为可选的?
$lookup
执行外部联接,如果没有匹配项,它将不会过滤
问题在于$unwind
,它将在数组为null或空时进行过滤,为了不过滤空数组,您需要在$unwind
管道中指定preserveNullandEmptyArray:true
Job.aggregate([
{$match: {created_by: req.params.userId }},
{$lookup: {
from: "users",
localField: "applicant._id",
foreignField: "_id",
as: "applicant" }
},
{$unwind: {
path :'$applicant',
preserveNullAndEmptyArrays: true}
}
])
顺便问一下,为什么$applicator必须有$prefix?