【问题标题】:mongodb: can find on a 2d index return distance?mongodb:可以找到二维索引返回距离吗?
【发布时间】:2012-06-28 11:54:25
【问题描述】:

我从 mongodb 文档中看到,带有 geoNear 返回距离 的 db.runCommand 也是。

我在 node.js 中使用猫鼬 想知道是否可以使用 Model.find({'loc': { $near: [lng, lat], $maxDistance :5/111.12},.....)

如果您有多个 2d 索引,则带有 geoNear 的 runCommand 将不起作用。我在一个集合中有 2 个 2d 索引。一个在架构中定义,另一个是 DbRef 的一部分。

另外,我对用于 mongoose 的 runco​​mmand 的确切语法不太满意。

【问题讨论】:

    标签: node.js mongodb mongoose spatial-index


    【解决方案1】:

    geoNear,在本机 MongoDB 驱动程序中可用,因此通过扩展在 mongoose 中,将搜索文档中的所有地理索引并可以在那里多次返回它,您可以传递参数 uniqueDocs 以确保您没有重复条目。

    collection.geoNear(50, 50, {uniqueDocs:true}, function(err, docs) {
    });
    

    另一种方法是对特定字段进行近距离查询,但您可能必须对距离值进行一些转换才能获得正确的范围。我不记得那会是什么。最好的实验场所是 mongoshell,然后将其转换为 node.js 的命令。

    【讨论】:

    • 我在此处发布了有关使用本机驱动程序 geoNear 的更长答案:stackoverflow.com/a/11825138/856403。但是回答原问题:目前使用find时无法获取距离。
    猜你喜欢
    • 2013-09-25
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多