Index
mongodb 的 2dsphere 索引是否適用於多維座標數組?
如果我創建這樣的索引:
db.createCollection("users") db.users.ensureIndex({coordinates:"2dsphere"});
然後插入一個點
var point = { type: "point", coordinates: [ 1, 2, 3, 4 ] } db.users.insert(point)
並在執行查詢後:
db.users.find( { coordinates: { $near : { $geometry: { type: "Point", coordinates: [1, 2, 3, 3 ] }, $maxDistance: 5000 } } } )
它似乎有效,de 2dsphere 索引在多維座標下是否按預期工作?
GeoJSON 規範不支持您建議的格式的多維座標位置:
位置由數字數組表示。必須至少有兩個元素,並且可能更多。元素的順序必須遵循 x、y、z 順序(投影座標參考系中的座標為東、北、高,或地理座標參考系中的座標為經度、緯度、高度)。任何數量的附加元素都是允許的——附加元素的解釋和含義超出了本規範的範圍。
MongoDB 3.0+ 中的2dsphere 索引將允許座標數組中的其他值,但只有前兩個值將被索引並用於 2dsphere 查詢。這允許將帶有附加元素(例如高度)的 GeoJSON 對象保存在 MongoDB 中,但這些附加值的解釋或使用取決於您的應用程式碼。
MongoDB 手冊包含有關支持的 GeoJSON 對象的資訊。
您還可以在 MongoDB 問題跟踪器中投票/觀看相關功能建議:SERVER-691: n-dimensional geospatial search。