MongoDB和Ruby:runCommand geoNear并按日期排序

MongoDB and Ruby: runCommand geoNear and sorting by date

因此,我想在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日期的顺序返回。有人对如何执行此操作有任何线索吗?


我不认为有可能按照链接

在geonear命令中添加排序

Valid options are:"near","num","maxDistance","distanceMultiplier"
and"query".

默认情况下按距离排序。

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

1
db.users.find( { loc :  { $nearSphere : [80.21223299999997, 13.034892],$maxDistance:20/6378  } } ).sort({ created_at : -1 } ) //-1 for descending

您的ruby mongomapper等效项可能是(不确定,请更好地验证)

1
Users.where(:loc => {'$nearSphere' => [-122, 37],'$maxDistance'=>20/6378 }).sort(:created_at.desc)