2016-02-21

MongoDB 地理空間インデックス

MongoDB にて地理空間のインデックスを作成したい。

インデックスの作成は通常の方法で行えるよう。

1# 初期状態のインデックスを確認 2$ db.places.stats() 3 4# インデックスを作成 5$ db.places.createIndex({Bar: "2dsphere"}) 6 7# 作成したインデックスを確認 8$ db.places.getIndexes()

これでplacesのインデックスがBarのフィールド内に昇順で作成される。
平面空間なら2d、球面空間なら2dsphereを使用するらしい。
今回は地球という球面空間の経緯度を記録する用途で使用するので、2dsphereとなる。
ちなみに以前よく使用されていた ensureIndex() は3.0からは非推奨となったよう。今後は基本的にcreateIndex() を使うらしい。

ただGeoJsonのデータと通常のインデックスの違いとしてフォーマットが正しくなければ作成できないようなので、下記Linterなどを使用して事前にコレクションがGeoJsonの仕様に準拠しているか確認したほうがよさそう。