计算 MongoDB 中重复元素的数量

Posted

技术标签:

【中文标题】计算 MongoDB 中重复元素的数量【英文标题】:Count the number of duplicate elements in MongoDB 【发布时间】:2021-12-22 06:54:36 【问题描述】:

我在 mongodb 中遇到了集合打击:


    "Id": "5",
    "Group": [
        
            "Name": "frank",
            "Roll": "123"
        
    ]
,

    "Id": "6",
    "Group": [
        
            "Name": "John",
            "Roll": "124"
        
    ]
,

    "Id": "7",
    "Group": [
        
            "Name": "John",
            "Roll": "125"
        
    ]

名字“John”出现了两次。我想显示多次出现的每个名称的数量:

"Name": "John", "Count":2 

【问题讨论】:

【参考方案1】:

您可以使用此聚合查询:

首先$unwind 解构数组并将所有值作为对象获取。 然后按名称分组,$sum 1 代表每个名称。 然后$match 获取那些存在多次(即重复)的值 最后一个阶段是输出您想要的值,在本例中为 NameCount
db.collection.aggregate([
  
    "$unwind": "$Group"
  ,
  
    "$group": 
      "_id": "$Group.Name",
      "Count": 
        "$sum": 1
      ,
      
    
  ,
  
    "$match": 
      "Count": 
        "$gt": 1
      
    
  ,
  
    "$project": 
      "_id": 0,
      "Name": "$_id",
      "Count": 1
    
  
])

例如here

【讨论】:

以上是关于计算 MongoDB 中重复元素的数量的主要内容,如果未能解决你的问题,请参考以下文章

如何计算mongodb中子对象(同一文档)的数量[重复]

MongoDB由于目标计算机积极拒绝,无法连接

MongoDB 写入策略与读一致性

给定这个数组数组,我如何计算其中包含重复元素的数组的数量?

MongoDB运行错误[重复]

MongoDB:从数组的开头删除一定数量的元素