Mongodb:通过最高的邮政编码城市人口查找具有最高数量的邮政编码和订单状态的城市

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb:通过最高的邮政编码城市人口查找具有最高数量的邮政编码和订单状态的城市相关的知识,希望对你有一定的参考价值。

收藏中的文件

 "_id" : "01001", 
"city" : "AGAWAM", 
" loc" : [ -72.622739, 42.070206 ],
"pop" : 15338,
"state" : "MA" 

第一部分是找到每个州最高的城市。 zipcodes(_id's)

我有这个 :-

db.zips.aggregate([ 

 $group:
  
    _id: state:"$state",city: "$city"   ,
    count: $sum:1,
    population:$sum:"$pop"
  
 ,
 
 $sort:count:-1
   
])

我得到的输出: -

 "_id" :  "state" : "TX", "city" : "HOUSTON" , "count" : 93,   "population" : 2095918 
 "_id" :  "state" : "CA", "city" : "LOS ANGELES" , "count" : 56, "population" : 2102295 
 "_id" :  "state" : "PA", "city" : "PHILADELPHIA" , "count" : 48, "population" : 1610956 
 "_id" :  "state" : "IL", "city" : "CHICAGO" , "count" : 47, "population" : 2452177 
 "_id" :  "state" : "TX", "city" : "SAN ANTONIO" , "count" : 45, "population" : 811792 
 "_id" :  "state" : "TX", "city" : "DALLAS" , "count" : 44, "population" : 940191 
 "_id" :  "state" : "MO", "city" : "KANSAS CITY" , "count" : 41,    "population" : 360182 

问题是我需要找到最高的城市。每个州的邮政编码,因此每个州只应出现一次而不是排序列表。基本上我正在为每个州寻找最高价值的邮政编码。

有关如何实现这一点的任何想法?

答案

只需在聚合管道中添加第二个$ group阶段,如下所示:

db.zips.aggregate([
   
      $group:
         _id:
            state:"$state",
            city:"$city"
         ,
         count:
            $sum:1
         ,
         population:
            $sum:"$pop"
         
      
   ,
   
      $sort:
         count:-1
      
   ,
   
      $group:
         _id:"$_id.state",
         count:
            $first:"$count"
         ,
         city:
            $first:"$_id.city"
         ,
         population:
            $first:"$population"
         
      
   
])

在网上尝试:mongoplayground.net/p/_Kpf37svCER

以上是关于Mongodb:通过最高的邮政编码城市人口查找具有最高数量的邮政编码和订单状态的城市的主要内容,如果未能解决你的问题,请参考以下文章

获取一个城市的人口给它的名字

通过 Zip Google Geocode Api 查找城市和州 [关闭]

获取一个国家所有城市的坐标和人口

Daily Note人口预测:时间序列法

在 MongoDB 中查找最高值

BI - 具有不相容颗粒的事实表设计