首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB和runCommand : geoNear和按日期排序

MongoDB和runCommand : geoNear和按日期排序
EN

Stack Overflow用户
提问于 2012-01-08 10:17:12
回答 1查看 1.3K关注 0票数 0

因此,我希望在mongodb上使用runCommand执行geoNear,并且希望结果按日期排序。

我知道怎么做第一部分

db.users.runCommand({'geoNear' :"users",'near' : [-76.483999, 42.402794], 'spherical' : true, 'maxDistance' : 20/6378 })

但是,如何才能得到按created_at排序的结果呢?如果我使用Mongo gem来执行此操作,则查询将如下所示

User.database.command({'geoNear'=>"users",'near' => [-122, 37]}, 'spherical' => true, 'maxDistance' => 20/6378)

不过,我不知道如何按日期对其进行排序。在这种情况下,我正在考虑在created_at上使用索引。我在location和created_at上都有索引,但结果仍然没有按created_at日期的顺序返回。有没有人知道该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-08 16:28:04

根据链接,我认为不可能在geonear命令中添加排序

查询的有效选项包括:“

”、"num“、"maxDistance”、"distanceMultiplier“和"query”。

默认情况下,它按距离排序。

或者,您可以像这样编写您的球形查询

代码语言:javascript
复制
db.users.find( { loc :  { $nearSphere : [80.21223299999997, 13.034892],$maxDistance:20/6378  } } ).sort({ created_at : -1 } ) //-1 for descending

您的ruby mongomapper等效项可能是(不确定,最好验证一下)

代码语言:javascript
复制
Users.where(:loc => {'$nearSphere' => [-122, 37],'$maxDistance'=>20/6378 }).sort(:created_at.desc)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8774875

复制
相关文章

相似问题

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