MongoDBの導入により、2.3 >
位置データの処理とクエリがさらに便利になりました。MongoDB はドキュメントを BSON として保存するため、各ドキュメントにはすべてのドキュメント フィールドがあり、従来の RMDBS よりも明らかに大きなデータベースになる可能性があります。
以前は、ポリラインとポリゴンを一連のインデックス付きポイントとして保存し、各ラインの順序を表す追加のフィールドを使用していました (JavaScript を使用する際の一貫性を確保するためにこれを行っていたため、ポイントが常に正しい順序で保存されるとは限りませんでした)。それは次のようなものでした:
polyline: {
[
point: [0,0],
order: 0
],
[
point: [0,1],
order: 1
]
}
今私が使用しているのに対し:
polyline: {
type: 'LineString',
coordinates: [
[0,0],
[1,0]
]
}
一部のポリラインには最大 500 ポイントを含めることができるため、ドキュメントのサイズが改善されました。
Point
ただし、すべてのデータをそのまま保存することの利点は何だろうと思っていGeoJSON
ます。次の例のように、ドキュメント サイズの増加に落胆しています。
loc: [1,0]
よりもはるかに優れています
loc: {
type: 'Point',
coordinates: [0,1]
}
したがって、作業がより簡単になります。
私の質問は:
GeoJSON
2点配列ではなく、点をオブジェクトとして保存する方が良い/推奨されますか?
私が検討したことは次のとおりです。
- サイズの制約: 何百万ものドキュメントが場所とともに潜在的に存在する可能性があり、コレクションのサイズに影響を与える可能性があり、潜在的に私のポケットに影響を与える可能性があります。
lng, lat
一貫性: ポイントに固執するのではなく、フォーマット内のすべての座標セットを処理した方がよいでしょうlat, lng
。他のすべての位置フィーチャは前者に固執します。- 利便性: ポイントを取得して
$geoWithin
or$geoIntersects
を使用すると、パラメータとして使用する前に最初に GeoJSON に変換する必要がなくなりquery
ます。
私が確信していないのは:
- MongoDB でのサポート
loc: [x,y]
が将来廃止されるかどうか - インデックス作成
2dsphere
は、2d
- MongoDB への追加が計画さ
GeoJSON
れている場合、上記の一貫性が必要になるかどうか。
GeoJSON
負担が大きい状態で将来切り替えるよりも、データがまだ管理可能なうちに移行したいと考えています。
徹底的に(少しでも)考え抜かれた回答をお願いします。すぐに正解を選択しないので、回答を評価できます。
また、SO が質問をするのに適切な場所であるかどうかもわかりません。そのため、DBA がより適切な場所である場合は、そこに質問を移動します。SO を選択したのは、MongoDB 関連のアクティビティがここにたくさんあるためです。