如果给定参数,猫鼬聚合过滤器

Posted

技术标签:

【中文标题】如果给定参数,猫鼬聚合过滤器【英文标题】:mongoose aggregate filter if param given 【发布时间】:2021-12-07 12:36:11 【问题描述】:

我有一个聚合,其中状态和 id 在查找管道中匹配。在集合中有一些角色,我从 request.query 中获得。如果角色请求为空,我想显示每个数据。但如果它不为空,我只想显示角色为“用户”的数据。我的代码给出了结果。但是当request.query为空时,不匹配,结果为空。

我怎样才能做到这一点?

我目前的比赛阶段


    $match: 
        $and: [
            
              $expr:  $eq: ["$$id", "$_id"] ,
            ,
             status: 1 ,
        ],
        $or: [ role: role ],
    ,
,

【问题讨论】:

【参考方案1】:

可以放JS条件,如果role有值则返回值,否则为空对象,不需要$or操作符,


    $match: 
        $and: [
            
              $expr:  $eq: ["$$id", "$_id"] ,
            ,
             status: 1 ,
            role ?  role: role  : 
        ]
    ,
,

【讨论】:

以上是关于如果给定参数,猫鼬聚合过滤器的主要内容,如果未能解决你的问题,请参考以下文章

我必须过滤带有数组的数组的猫鼬数据?

在猫鼬中,如何根据当前结果过滤搜索结果?

猫鼬过滤器发送任何数据

用数组过滤猫鼬数组?

如何对聚合进行过滤以有效地使用索引?

使用数组过滤器更新多个嵌套数组在猫鼬中不起作用