繁体   English   中英

带有计数的 mongoDB geoNear 命令

[英]mongoDB geoNear command with count

我正在使用带有 mongoid 的 geoNear Commang 来检索按距离排序的文档集合。 我需要集合中每个文档的距离,这就是我不得不求助于 geoNear 命令的原因。 给出以下命令:

category_ids = ["list", "of", "ids"]
cmd = Hash.new
cmd[:geoNear] = :poi
cmd[:near] = [params[:location][:x], params[:location][:y]]
cmd[:query] = {
  "$or" => [
    {primary_category_id: {"$in" => category_ids}},
    {category_ids: {"$in" => category_ids}}
  ]
}
cmd[:spherical] = true
cmd[:num] = num
res = Poi.collection.database.command cmd

我的问题是我需要集合中的结果总数。 当然,我可以运行另一个查询,该查询只计算满足命令查询部分的项目数,但这会非常低效,也不是很可扩展,因为我在命令中所做的每个更改都必须反映在计数中询问。 仅仅添加一个 maxDistance 就会让我陷入一大堆麻烦。

另一种选择是手动查找和计算距离,但我想再次避免这种情况。

所以我的问题是有一种聪明的方法来获取命令返回的文档数量(减去num ),而无需运行单独的查询或手动计算距离并使用 find。

您可以在 geoNear 使用 facet 后使用 facet 来投影文档,而在其他方面,您可以使用 group by _id null 并使用分组中的计数来计算文档总数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM