0

たとえば、緯度と経度を含む数千の「レコード」を含むmongodbコレクションがあります。

{ "_id" : ObjectId("50ad4f686579e337e1ec2294"), "place" : "Portugal", "lat" : 41.8343, "lon" : -8.3342 }

すべてのコレクション「レコード」を更新して、latとlonを次のようなlocationという新しいフィールド内に配置する方法:

{ "_id" : ObjectId("50ad4f686579e337e1ec2294"), "place" : "Portugal", "location": {"lat" : 41.8343, "lon" : -8.3342 } }

よろしく偽物

4

1 に答える 1

1

基本的に、更新だけを使用してこれを行うことはできません。

すべてのドキュメントを繰り返し処理し、所定の場所で更新する必要があります。

db.coll.find().forEach(
  function (doc) {
    doc.location = { lat: doc.lat, lon: doc.lon };
    delete doc.lat;
    delete doc.lon;
    db.coll.save(doc);
  }
)

別のオプションは、これをプログラムで行うことです。各ドキュメントを確認します。選択したプログラミング言語を使用してコピーし、各ドキュメントを希望どおりに更新します

PS誰かに助けを求めるときは、開始コードにエラーがないことを確認してください。行方不明を見つけるのにかなり時間がかかりました」

于 2012-11-22T02:28:22.757 に答える