1

現在、MongoDBデータベースの個別のフィールドに緯度/経度がありますが、地理空間検索を実行する場合は、次の形式にする必要があります。

{ location : [ 50 , 30 ] } 

上記のように、ドキュメントごとに緯度/経度キーの値を新しいキーに置き換えるにはどうすればよいですか?

TIA!

4

1 に答える 1

1

フィールドを持たないすべてのドキュメントを反復処理して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地理空間インデックスの順序は、ドキュメント内で(経度、緯度)として一貫している必要があることに注意してください。

于 2012-07-31T04:14:40.887 に答える