2011-04-04 50 views
3

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

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

我可以通过“CID”,以确保只有带有等于“1”的“CID”的记载?如果geoNear不可能,我该怎么做?我正在使用geoNear,因为它会返回距离...

谢谢!

回答

10

是的,当然有可能。你可以使用任何过滤以$附近像往常一样:

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

更新:

如果你需要使用距离db.runCommand,如果没有必要的距离 - db.collection.find如常。

documentation

的geoNear命令具有在 结果,以及一些 诊断故障排除从指定点返回的 每个项目的距离的增加 益处。

有一个在db.runCommandquery参数,你可以使用它像这样:

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

但我使用类似:db.runCommand({geoNear: “LOCS”,附近:[0, 0],spherical:true,maxDistance:range/earthRadius});如果我使用db.example.find();我将如何计算距离? – mike 2011-04-04 22:27:48

+0

@mike:我已经更新了答案。检查它的细节。 – 2011-04-05 15:42:22

+0

昨天发布后我发现这个“查询:”选项!但我会把它标记为帮助你的答案!非常感谢! – mike 2011-04-05 17:11:17