2013-05-17 77 views
1

我想要一個MongoDB集合,每個文檔都包含一個由緯度/經度點(在GeoJSON中)定義的地理空間多邊形。然後,我想要獲取任意給定的經度/緯度點,並檢查它是否位於文檔中定義的任何MongoDB多邊形內。假設這是文件的外觀。

{ 
    "type" : "congressional", 
    "points" : [ 
     { "coords" : [ 
      -141.0205, 
      70.0187 ] 
     }, 

     ... 

     { "coords" : [ 
      -141.0205, 
      70.0187 ] 
     } 
    ] 
} 

或者,也許像這樣:

{ loc : 
    { type : "Polygon" , 
    coordinates : [ [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ] ] 
} } 

然後,我會質疑它,假設,像這樣(最有可能與蒙戈的$geoWithin):

db.places.find({ loc : { $geoWithin : { $geometry : "EACH DOCUMENT IN COLLECTION"} } }) 

是地理界線,什麼類似,可能與當前的MongoDB功能集有關嗎?如果是這樣,它將如何完成?

+0

我已經完全改寫的問題,包括在努力幫助澄清我是問一些假設的代碼示例。如果您認爲現在這個問題的格式很容易理解,並且明確表示一個真正的問題,請您考慮投票重新打開它。非常感謝! –

+0

+1好問題..你是否能夠解決這個問題,你使用什麼開發語言? – Baba

+1

根據我已經決定的所有進一步研究,MongoDB並沒有真正支持geofencing。與此同時,我選擇PostgreSQL與PostGIS一起使用。如果MongoDB曾經支持完整的地理圍欄,我會切換回它。我希望這有助於! –

回答

0

我相信你必須首先找到的集合。每一個文檔,然後做一個「$ geoWithin」查詢每個文檔,在多邊形通過測試對每個案例。

取決於您的收藏中的文件的數量,可能會或可能不會提供足夠的性能。