現在、MongoDBデータベースの個別のフィールドに緯度/経度がありますが、地理空間検索を実行する場合は、次の形式にする必要があります。
{ location : [ 50 , 30 ] }
上記のように、ドキュメントごとに緯度/経度キーの値を新しいキーに置き換えるにはどうすればよいですか?
TIA!
現在、MongoDBデータベースの個別のフィールドに緯度/経度がありますが、地理空間検索を実行する場合は、次の形式にする必要があります。
{ location : [ 50 , 30 ] }
上記のように、ドキュメントごとに緯度/経度キーの値を新しいキーに置き換えるにはどうすればよいですか?
TIA!
フィールドを持たないすべてのドキュメントを反復処理してlocation
追加する必要があります(アプリケーションが破損しない限り、おそらくlat / longフィールドを削除します)。
db.mycollection.find( { location : { $exists : false } } ).forEach(
function (doc) {
// Add (lon, lat) pairs .. order is important
doc.location = { lon: doc.lon, lat: doc.lat };
// Remove old properties
delete doc.lon;
delete doc.lat;
// Save the updated document
db.mycollection.save(doc);
}
)
MongoDB地理空間インデックスの順序は、ドキュメント内で(経度、緯度)として一貫している必要があることに注意してください。