我有一个 Access 2010 数据库,其中包含来自 Geonames 的信息。表名是城市。为简单起见,这些列是“名称”、“纬度”、“经度”、“位置”。我创建了“loc”来将“经度”和“纬度”组合到一个字段中,这样我就可以使用 MongoDB 的地理空间索引。我必须以字符串格式保存“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”字段与地理空间索引一起使用。