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:通过最高的邮政编码城市人口查找具有最高数量的邮政编码和订单状态的城市的主要内容,如果未能解决你的问题,请参考以下文章