地理空間情報をドキュメント フィールドに格納する場合は、mongoDB のドキュメント (リンク) によると、配列または埋め込みドキュメントの 2 つのオプションがあり、順序は常に経度、緯度である必要があります。
埋め込みドキュメントを使用したい場合、フィールドの順序を確認するにはどうすればよいですか?
それとも、埋め込まれたドキュメントのフィールドに特定の名前が必要ですか?
地理空間情報をドキュメント フィールドに格納する場合は、mongoDB のドキュメント (リンク) によると、配列または埋め込みドキュメントの 2 つのオプションがあり、順序は常に経度、緯度である必要があります。
埋め込みドキュメントを使用したい場合、フィールドの順序を確認するにはどうすればよいですか?
それとも、埋め込まれたドキュメントのフィールドに特定の名前が必要ですか?
埋め込みドキュメントでは、埋め込みドキュメントのフィールドの名前に関係なく、最初のフィールドに経度の値が含まれ、2番目のフィールドに緯度の値が含まれている必要があります。例えば:
db.zips2.insert( { _id: 1, city: "b", loc: { x: -73.974, y: 40.764 } } )
db.zips2.insert( { _id: 2, city: "b", loc: { x: -73.981, y: 40.768 } } )
ここで、xフィールドは経度になります。yフィールドは緯度になります。
よろしく
「すべてのドキュメントは、位置データを同じ順序で保存する必要があります。緯度と経度を座標系として使用する場合は、常に経度を最初に保存してください。MongoDB の 2D 球面指数演算子は、[経度、緯度] の順序のみを認識します。」
必要な場合に備えて、MongoDB の地理空間クエリに関する良い投稿を次に示します。
地理空間インデックスを使用すると、地理的な場所に基づいて物事を見つけることができます。
2 つのオプションがあります。
2 次元では、x
&y
座標とさまざまなオブジェクトの束を持つデカルト平面があります。
x
ドキュメントは、ある種の を保存する必要がありy
ますensureIndex({'location':'2d', 'type':1})
。
(type
オプションの) オプションは、インデックスの方向、つまり昇順または降順を指定します。複合インデックスにすることができます。
使用例:
近くの場所を見つけるには、次のコマンドを使用します。
db.collectionName.find({location: {$near:[x,y]}})
実際には、これがよく使われる方法はlimit
. 結果をたとえば20に制限するには、追加します.limit(20)
。
db.collectionName.find({location: {$near:[x,y]}}).limit(20)