我正在开发一个 PHP 应用程序,其中我们需要检索特定边界内的结果,但按结果的创建日期而不是距离排序。我认为 MongoDB 的 geoNear 命令对此非常有用,因为它负责计算每个结果的距离。但是,我想知道是否有一种方法可以指定按 create_date 属性而不是距离进行排序。理想情况下,我将创建坐标和创建日期的复合键索引,然后快速检索按创建日期排序的特定区域中的所有结果。
这是可能的,还是我必须在查询后进行排序?
但是,我想知道是否有一种方法可以指定按 create_date 属性而不是距离进行排序......
如果您正在使用$near
命令那么你必须首先按距离排序,否则“近”的概念实际上没有任何意义。在地球上,一切都可以“接近”给定点,这只是“接近”的问题。
您在这里有两个选择:
- 限制结果
$near
- use the
$within
command
我想你正在寻找的是$within
command
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
然后您可以通过其他键对它们进行排序:
db.places.find(...).sort({created:1})
但是,within 命令可能会提供太多结果,因此您可能需要添加一些逻辑来限制由$within
.
db.places.find(...).limit(50).sort({created:1})
事实是,如果你达到了特定的限制,你的价值$within
命令通常开始下降。您的客户端代码可能想要检查您是否达到了最大结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)