【问题标题】:mongodb geoNear + additional filters?mongodb geoNear +其他过滤器?
【发布时间】:2011-04-04 21:00:42
【问题描述】:

在 mongodb 中使用 geoNear 时是否可以添加更多过滤器?例如,假设我的记录如下所示:

{
 _id: {},
 cid: 1,
 latlon: [ -74.07096147537231, 40.9088747684256 ]
}

我可以传递“cid”以确保只有“cid”等于“1”的记录吗?如果 geoNear 不可能,我该怎么做?我使用 geoNear 因为它返回距离...

谢谢!

【问题讨论】:

    标签: mongodb mongodb-php


    【解决方案1】:

    是的,当然可以。您可以像往常一样使用 $near 进行任何过滤:

    db.places.find( { latlon: { $near : [50,50] } }, {cid: 1} )
    

    更新:

    如果你需要距离使用db.runCommand,如果不需要距离——照常使用db.collection.find

    来自documentation

    geoNear 命令已添加 返回距离的好处 从指定点开始的每个项目 结果,以及一些 用于故障排除的诊断。

    db.runCommand中有query参数,可以这样使用:

    db.runCommand( { geoNear : "latlon" , near : [ 50 , 50 ], num : 10,
                     query : { cid: 1 } } );
    

    【讨论】:

    • 但我正在使用类似的东西:db.runCommand({ geoNear : "locs", near : [0, 0],spherical : true, maxDistance : range / earthRadius });如果我使用 db.example.find();我将如何计算距离?
    • 我昨天发帖后发现了这个“查询:”选项!但我会将其标记为已回答以寻求帮助!非常感谢!
    • 如何指定要投影的键?例如,在这种情况下,如果我只想取回 _id...谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2013-04-29
    • 1970-01-01
    相关资源
    最近更新 更多