【问题标题】:MongoDB Aggregate Query IssuesMongoDB 聚合查询问题
【发布时间】:2021-12-14 16:34:15
【问题描述】:

我正在使用一个数据集在 MongoDB 上进行查询,该数据集包含 id、city、locations(as loc) population(as pop) 和 state。并且数据包含冗余值(城市重复)。我必须提取特定州的独特城市,但我不确定我的查询有什么问题。这是我的查询db.zipcodes.aggregate([{$match:{state:"NY"}},{$group:{_id:null, city:{$addToSet:"$city"},count:{$sum:1}}}])它没有删除重复的城市。

【问题讨论】:

  • 您的意思是city 数组在输出中有重复项?
  • 城市不是数组。但是存在具有相同城市名称的记录。
  • 就 mongo 而言,没有重复项。仅仅因为两个文档有一个相似的字段并不能使它们相等(也就是重复)。您要查找的输出是什么?
  • addToSet 操作将创建一个数组

标签: mongodb


【解决方案1】:

使用这个聚合

db.zipcodes.aggregate([
  {$match:{state:"NY"},
  {
    '$project': {
      '_id': 0
    }
  }, {
    '$group': {
      '_id': '$city', 
      'orig': {
        '$addToSet': '$$ROOT'
      }, 
      'count': {
        '$sum': 1
      }
    }
  }, {
    '$unwind': {
      'path': '$orig'
    }
  }, {
    '$project': {
      'orig.count': '$count', 
      'orig.city': 1, 
      'orig.state': 1
    }
  }, {
    '$replaceRoot': {
      'newRoot': '$orig'
    }
  }
])

【讨论】:

    猜你喜欢
    • 2021-07-03
    • 2019-10-22
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多