mongodb GROUP BY 和 COUNT 文档中的数组

Posted

技术标签:

【中文标题】mongodb GROUP BY 和 COUNT 文档中的数组【英文标题】:mongodb GROUP BY and COUNT an Array within Document 【发布时间】:2021-06-13 09:22:44 【问题描述】:

鉴于: 集合中的单个文档。 Document 包含一个数组。 (即集合中只有一个文档条目)

期望: 对cityprint counts进行分组

样本数据:


name: "ABC Bank",
hospitalList: [
  city: "Delhi", hspName: "EEE hospital",
  city: "Delhi", hspName: "FFF hospital",
  city: "Surat", hspName: "MMM hospital",
  city: "Noida", hspName: "GGG hospital",
  city: "Surat", hspName: "HHH hospital",
  city: "Surat", hspName: "NNN hospital",
  city: "Surat", hspName: "PPP hospital",
]

预期输出:

Delhi - 2
Noida - 1
Surat - 3

试过(但没用)

$group: 
  _id: "hospitalList.city",
  count:  $sum: 1 

【问题讨论】:

【参考方案1】: $match - 匹配文件银行名称 $unwind - 拆分数组 自己文档中的对象 $group - 按城市分组然后计算 计数
db.collection.aggregate([
  
    $match: 
      name: "ABC Bank"
    
  ,
  
    "$unwind": "$hospitalList"
  ,
  
    $group: 
      _id: "$hospitalList.city",
      count: 
        $sum: 1
      
    
  
])

Mongo 游乐场:https://mongoplayground.net/p/Ac7RkJd7vU9

按照预期的输出: Mongo游乐场:https://mongoplayground.net/p/zeqB7P-BYmI

【讨论】:

以上是关于mongodb GROUP BY 和 COUNT 文档中的数组的主要内容,如果未能解决你的问题,请参考以下文章

group by...having count()的问题

BIGQUERY 中的 COUNT() 和 GROUP BY

COUNT(DISTINCT) 和 COUNT(*) + GROUP BY 给出不同的结果

group by 获取最大的一组 count(1) 值

使用 ActiveRecord 进行 GROUP BY 和 COUNT

Django- Group by 和 Count by unique together