使用mongoDB聚合查找百分比

РоДев

我有2个文件的集合。每个文档都有bank []数组,其中包含对象。

有3家银行:ABC,PQR,XYZ。

对于文件1

banks[{name:"PQR", pdf:true, amt: 500}, {name:"ABC", amt:300}]

对于文件2

banks[{name:"XYZ", pdf:true, amt:450}, {name:"PQR", amt:200}, {name:"ABC",pdf:true, amt:600}]

我正在尝试为每个具有pdf值真实的银行找到百分比。

考虑银行ABC

总发生次数:2

使用“ pdf:true”键的次数:1

百分比:50

我想要这样的结果

{name:"ABC", percentage: 50}

同样,我想找到剩余的银行。如何进行汇总。请提前帮助。

蒂亚·约瑟
  • 我从$ unwind开始展平banks数组

  • 然后使用$ facet进行并行分组。

    创建了两个组:

    • pdfTrue其中包含pdf=true每个银行名称的文件数量
    • total 其中包含每个银行名称的文件总数。
  • 然后,将pdfTrueandtotal数组同时连接并根据银行名称分组后找到百分比

您可以使用以下方法实现用例:

db.collection.aggregate([
  {
    $unwind: "$banks"
  },
  {
    "$facet": {
      "pdfTrue": [
        {
          $group: {
            _id: "$banks.name",
            count: {
              $sum: {
                $cond: [
                  {
                    $eq: [
                      "$banks.pdf",
                      true
                    ]
                  },
                  1,
                  0
                ]
              }
            },
            
          }
        }
      ],
      "total": [
        {
          $group: {
            _id: "$banks.name",
            count: {
              "$sum": 1
            }
          }
        },
        {
          $project: {
            total: "$count"
          }
        }
      ]
    }
  },
  {
    $project: {
      concat: {
        $concatArrays: [
          "$total",
          "$pdfTrue"
        ]
      }
    }
  },
  {
    $unwind: "$concat"
  },
  {
    $group: {
      _id: "$concat._id",
      values: {
        $mergeObjects: {
          count: "$concat.count",
          total: "$concat.total",
          
        }
      }
    }
  },
  {
    $project: {
      "_id": 0,
      "name": "$_id",
      "percentage": {
        $multiply: [
          {
            $divide: [
              "$values.count",
              "$values.total"
            ]
          },
          100
        ]
      }
    }
  }
])

在此处查看输出:MongoDB Playground

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于HAVING count(*)百分比-使用百分比计算的复杂查询

来自分类Dev

使用Pandas Groupby功能查找获利投资的百分比

来自分类Dev

使用group_by查找子组中的百分比并进行汇总

来自分类Dev

在Tableau中使用筛选器查找总计的百分比

来自分类Dev

使用函数计算百分比

来自分类Dev

使用FFMPEG查找两个视频之间的差异百分比

来自分类Dev

使用Python“ imgdiff”库查找两个图像之间的差异百分比

来自分类Dev

如何查询Vertica中聚合的百分比

来自分类Dev

使用随机百分比

来自分类Dev

如何使用mongodb聚合计算数组字段上的百分比?

来自分类Dev

计算百分比使用熊猫

来自分类Dev

查找相对百分比

来自分类Dev

在mongodb聚合管道中计算组内的百分比

来自分类Dev

使用SQL计算百分比

来自分类Dev

稀疏百分比值的“平均”聚合

来自分类Dev

CSS DIV使用百分比

来自分类Dev

使用Pandas Groupby功能查找获利投资的百分比

来自分类Dev

通过group子句进行SQL百分比聚合

来自分类Dev

在Tableau中使用筛选器查找总计的百分比

来自分类Dev

空格问题使用百分比

来自分类Dev

占用数组百分比并使用功能find()查找位置的问题

来自分类Dev

如何查询Vertica中聚合的百分比

来自分类Dev

如何使用Mongo聚合功能来计算嵌套组的总计和小计百分比?

来自分类Dev

使用JavaScript计算百分比

来自分类Dev

使用VBA计算百分比

来自分类Dev

SQL Server 使用已计算的总数查找百分比

来自分类Dev

使用group_by查找百分比并通过dplyr在R中汇总

来自分类Dev

在整数中使用百分比

来自分类Dev

从列表中查找百分比