Geonames からの情報を含む Access 2010 データベースがあります。テーブル名は都市です。簡単にするために、列は「name」、「latitude」、「longitude」、「loc」です。MongoDB の地理空間インデックスを使用できるように、「経度」と「緯度」を 1 つのフィールドに結合する「loc」を作成しました。2 つの 10 進数値を間にコンマで結合しているため、「loc」列を文字列形式で保存する必要がありました。
このテーブルを CSV にエクスポートするときは、「経度」と「緯度」をスキップします。これは、新しく結合された「loc」フィールドがあるためです。
CSV は次のようになります。
"geonameid", "name", "loc"
1, "Sweden", "18.068287,59.336341"
「都市」コレクションに MongoImport を実行すると、loc フィールドは次のような引用符で囲まれます。
{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : "18.068287,59.336341", }
ここから、「loc」を配列に変換するコマンドを実行します。Stackoverflow の別の寄稿者のおかげで、次のコマンドを使用します。
db.cities.find( { 'loc' : {$type : 2 } } ).forEach( function (x) { x.loc = new Array(x.loc); db.cities.save(x); });
結果は次のとおりです。
{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : [ "18.068287,59.336341" ], }
「loc」フィールドの GPS 座標から引用符を削除するにはどうすればよいですか? 私は Java でコーディングすることはできませんし、MongoDB がこのタスクを実行するのを待つことも気にしません。「経度」フィールドと「緯度」フィールドを含む CSV をエクスポートし、それらを MongoDB の新しい「loc」フィールドに結合することができれば、それが美しいソリューションでなくても気にしません。地理空間インデックスで動作する「loc」フィールドを取得する必要があるだけです。