2

私はMongoDbGeospatialインデックスを頻繁に使用しており、現在、古いNoRMフレームワークを公式の10genCSharpドライバーに置き換える作業を行っています。私が抱えている問題は、NoRMによって処理された既存のデータの場合、座標が逆の順序[y、x]であり、公式のドライバーがそれを気に入らないように見えることです。

したがって、既存のデータについては、次の構造になっています。

{
   "Coordinates" [: 
   {
      "Longitude" : -85.68216, 
      "Latitude" : 38.221452          
   },
   //.. more coordinates
   ]
}

だから私の質問は、配列内のすべての要素の順序を次のように変更するにはどうすればよいですか?

{
   "Coordinates" [: 
   {
      "Latitude" : 38.221452,  
      "Longitude" : -85.68216               
   },
   //.. more coordinates
   ]
}

ありがとう!

4

1 に答える 1

2

順序を逆にしたい場合は、コレクション全体を調べて、各ドキュメントを正しい形式に書き直す必要があります。これを行うためのJavaScriptコードを次に示します。自由に味付けしてください。

XDB = db.locations;
var iter = XDB.find()

do {
    var doc = iter.next();
    var newdoc = {};
    newdoc.Coordinates = [];
    for ( var k in doc.Coordinates ) {
        var newpair = { Latitude: doc.Coordinates[k].Latitude, 
                        Longitude: doc.Coordinates[k].Longitude } ;
        newdoc.Coordinates.push(newpair);
    }
    XDB.update({_id: doc._id}, newdoc );
} while ( iter.hasNext() );
于 2012-07-18T22:58:18.410 に答える