MongoDB geoNear + 额外过滤器?

4
在使用MongoDB中的geoNear时,是否可以添加更多的过滤器?例如,假设我的记录如下所示:
{
 _id: {},
 cid: 1,
 latlon: [ -74.07096147537231, 40.9088747684256 ]
}

我可以传递“cid”以确保仅返回“cid”等于“1”的记录吗?如果无法通过geoNear实现,我该怎么办?我正在使用geoNear因为它会返回距离...谢谢!
1个回答

11

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

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

更新:

如果需要距离,请使用db.runCommand,如果不需要距离,则像平常一样使用db.collection.find

来自文档

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(); ,那么我该如何计算距离呢? - mike
昨天发布后,我发现了这个“查询:”选项!但是我会将其标记为已回答以表示感谢!非常感谢! - mike
我该如何指定要投影的键?例如,在这种情况下,如果我只想获取 _id 返回...谢谢! - vdeantoni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接