Index

mongodb 的 2dsphere 索引是否適用於多維座標數組?

  • January 13, 2016

如果我創建這樣的索引:

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

引用自:https://dba.stackexchange.com/questions/125770