首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB GeoNear聚合

MongoDB GeoNear聚合
EN

Stack Overflow用户
提问于 2013-05-05 05:40:49
回答 2查看 608关注 0票数 1

问题是:

考虑以下位置:-72,42和该点周围半径2的范围(圆)。编写一个查询来查找与此范围(圆)相交的所有状态。然后,您应该返回每个州的总人口和城市数量。根据城市数量对各州进行排名。

到目前为止,我写了以下内容:

db.zips.find({loc:{$near:-72,42,$maxDistance: 2}})

其输出示例为:{ "city“:"WOODSTOCK","loc”:-72.004027,41.960218,"pop“:5698,"state”:"CT","_id“:"06281”}

在SQL中,我将简单地按“州”进行分组,我如何在计算所有城市和总人口的同时做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-05 20:24:59

假设您对其邮政编码数据遵循mongoimport例程(我将我的邮政编码数据放入了一个名为zips7的集合中):

mongoimport --db mydb --集合zips7 --类型json --文件c:\users\drew\downloads\zips.json

mongoimport --db -集合zips7 --类型json --文件/数据/播放数据/zips.json

(取决于您的操作系统和路径)

然后

db.zips7.ensureIndex({loc:"2d"})

代码语言:javascript
复制
db.zips7.find({loc: {$near: [-72, 42], $maxDistance: 2}}).forEach(function(doc){
   db.zips8.insert(doc);
});

注意,db.zips7.stats()显示大约30k行,而zips8有100行

代码语言:javascript
复制
 db.zips8.aggregate( { $group :
 { _id : "$state",
   totalPop : { $sum : "$pop" },
   town_count:{$sum:1} 
 }}
 )


 {
        "result" : [
                {
                        "_id" : "RI",
                        "totalPop" : 39102,
                        "town_count" : 10
                },
                {
                        "_id" : "MA",
                        "totalPop" : 469583,
                        "town_count" : 56
                },
                {
                        "_id" : "CT",
                        "totalPop" : 182617,
                        "town_count" : 34
                }
        ],
        "ok" : 1
}
票数 1
EN

Stack Overflow用户

发布于 2014-12-09 17:44:59

mongoid中的语法

代码语言:javascript
复制
Zips.where(:loc => {"$within" => {"$centerSphere"=> [[lng.to_f,lat.to_f],miles.to_f/3959]}})

示例:

代码语言:javascript
复制
Zips.where(:loc => {"$within" => {"$centerSphere"=> [[-122.4198185,37.7750454],2.0/3959]}})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16379235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档