You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB聚合查询无法对指定州的城市字段去重问题排查

MongoDB指定州唯一城市查询解决方案

现有查询问题说明

你当前使用的聚合语句中$addToSet: "$city"本身可以生成去重的城市集合,但count: {$sum: 1}统计的是纽约州所有邮编条目的总数量,而非去重后的城市总数。如果需要更精准的获取唯一城市列表、配套正确的去重计数,可以使用以下优化方案:

注意:如果实际查询中仍存在看起来重复的城市条目,需检查city字段是否存在大小写差异、前后空格等隐性字符,可在查询中先对city字段做格式化处理,避免隐性字符导致的去重失效。

方案1:轻量化查询(仅需唯一城市列表)

直接使用MongoDB内置的distinct方法,一步返回去重后的城市数组:
db.zipcodes.distinct("city", {state: "NY"})

方案2:聚合查询(同时获取唯一城市列表+去重城市总数)

如需同时统计去重后的城市数量,调整聚合逻辑如下:

db.zipcodes.aggregate([
  // 筛选纽约州的所有条目
  {$match:{state:"NY"}},
  // 可选:对city字段做格式化,避免隐性字符导致去重失效
  {$project: {
    city: {$trim: {$toLower: "$city"}},
    state: 1
  }},
  // 按城市分组,天然过滤重复城市
  {$group:{_id: "$city"}},
  // 汇总所有唯一城市并统计数量
  {$group:{
    _id: null,
    uniqueCityList: {$addToSet: "$_id"},
    uniqueCityTotal: {$sum: 1}
  }}
])

参考数据集

MongoDB数据

内容的提问来源于stack exchange,提问作者Waqar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:54:02