带有条件的MongoDB Facet子管道数组过滤器

问题描述 投票:0回答:1

我的查询聚合为https://mongoplayground.net/p/jxaI7MAyBmJ

我通过在数据下添加阶段来过滤具有以下 2 个条件的项目类型、计数和 empName

  1. 输入 a2 并
  2. empName(类型为a1)应该与empName(类型为a2)相等。
db.collection.aggregate([
  {
    $facet: {
      "data": [
        {
          $match: {
            type: {
              $in: [
                "a1",
                "a2"
              ]
            }
          }
        },
        {
          $group: {
            _id: {
              emp_name: "$emp_name",
              type: "$type"
            },
            count: {
              $sum: 1
            }
          }
        },
        {
          $project: {
            empName: "$_id.emp_name",
            type: "$_id.type",
            count: 1,
            _id: 0
          }
        }
        
        //Have to ADD sub stages here with the above mentioned 2 condition
      ]
    }
  }
])

我尝试应用此条件,但无法解决此问题。

提前致谢

mongodb aggregate facet
1个回答
-1
投票

我仍然不明白你在寻找什么,但是这个给出了想要的结果:

db.collection.aggregate([
  {
    $facet: {
      "data": [
        { $match: { type: "a2" } },
        {
          $group: {
            _id: {
              emp_name: "$emp_name",
              type: "$type"
            },
            count: { $sum: 1 }
          }
        },
        {
          $project: {
            empName: "$_id.emp_name",
            type: "$_id.type",
            count: 1,
            _id: 0
          }
        }
      ]
    }
  }
])

蒙戈游乐场

© www.soinside.com 2019 - 2024. All rights reserved.