如果给定参数,猫鼬聚合过滤器
mongoose aggregate filter if param given
我有一个聚合,其中状态和 ID 在查找管道中匹配。在集合中有一些角色,我从 request.query 获得。如果角色请求为空,我想显示每个数据。但如果它不为空,我只想显示角色所在的数据,例如 'user'。我的代码给出了结果。但是当request.query为空时,不匹配,结果为空。
我怎样才能做到这一点?
我目前的比赛阶段
{
$match: {
$and: [
{
$expr: { $eq: ["$$id", "$_id"] },
},
{ status: 1 },
],
$or: [{ role: role }],
},
},
可以放JS条件,如果role
有值则return值否则为空对象,不需要$or
运算符,
{
$match: {
$and: [
{
$expr: { $eq: ["$$id", "$_id"] },
},
{ status: 1 },
role ? { role: role } : {}
]
},
},
我有一个聚合,其中状态和 ID 在查找管道中匹配。在集合中有一些角色,我从 request.query 获得。如果角色请求为空,我想显示每个数据。但如果它不为空,我只想显示角色所在的数据,例如 'user'。我的代码给出了结果。但是当request.query为空时,不匹配,结果为空。
我怎样才能做到这一点?
我目前的比赛阶段
{
$match: {
$and: [
{
$expr: { $eq: ["$$id", "$_id"] },
},
{ status: 1 },
],
$or: [{ role: role }],
},
},
可以放JS条件,如果role
有值则return值否则为空对象,不需要$or
运算符,
{
$match: {
$and: [
{
$expr: { $eq: ["$$id", "$_id"] },
},
{ status: 1 },
role ? { role: role } : {}
]
},
},