mongodb geoNear +额外的过滤器?

时间:2011-04-04 21:00:43

标签: mongodb mongodb-php

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:11)

是的,确定有可能。您可以像往常一样使用$ near过滤:

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

更新:

如果你需要使用距离db.runCommand,如果不需要距离 - db.collection.find像往常一样。

来自documentation

  

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

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

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