【问题标题】: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 }],
    },
},

【问题讨论】:

    标签: mongoose filter match aggregate


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-10
      • 2021-07-18
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多