首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化mongodb地理空间查询?

如何优化mongodb地理空间查询?
EN

Stack Overflow用户
提问于 2016-05-19 11:15:24
回答 1查看 272关注 0票数 0

不久前,我在黑客马拉松期间创建了crowdfundstats.com网站。该网站提供了一些有趣的内部基础上的130.000左右的kickstarter项目数据,我们已经刮了。最有趣的特性是http://crowdfundstats.com/map.html,您可以在这个http://crowdfundstats.com/map.html上拖动一个radius在世界地图上获取该半径内项目的信息。

我使用聚合函数根据其地理空间信息查找半径内的所有项目。每个项目都有以下格式的地理位置:

代码语言:javascript
复制
{ g1 :
    { type : "Point" },
    { coordinates : [ -83.102840423584, 42.354639053345] }     
}

然后,聚合函数返回支持方的总数、平均持续时间、成功百分比和半径内的项目总数:

代码语言:javascript
复制
{'$match' : 
    {g1 :
        {$geoWithin :
            { $centerSphere :[[parseFloat(long), parseFloat(lat) ], radius/6371 ] 
            }
        }
    }
},
{'$group':
    {   "_id":"",
        "backers":    {"$sum": "$backers"},
        "dateDiff2":  {"$avg": "$dateDiff2"},
        "completed":  {"$avg": "$completed"},    
        "total":      {"$sum": 1}
    }
}

问题是查询的结果需要很长时间(例如:在英国拖曳半径时超过10秒)。我已经添加了一个2 2dsphere索引来提高速度,但是这几乎没有效果:

代码语言:javascript
复制
{
    "g1" : "2dsphere"
}

我能做些什么来优化查询吗?或者这是地理空间查询的预期性能吗?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 07:56:02

对于任何遇到这个线程的人,我已经通过从MongoDB 3.0升级到3.2,将最繁重的查询从15秒提高到0.5秒。他们极大地改进了地理空间查询。你可以在MongoDB博客上读到更多关于它的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37321565

复制
相关文章

相似问题

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