2011-04-04 69 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