首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >地理名称和MongoDB:将Access 2010导出到MongoDB以使用地理空间索引

地理名称和MongoDB:将Access 2010导出到MongoDB以使用地理空间索引
EN

Stack Overflow用户
提问于 2012-11-19 16:44:56
回答 2查看 882关注 0票数 0

我有一个从Geonames的信息Access 2010数据库。表名称为cities。为简单起见,这些列是"name“、"latitude”、"loc“、”loc“。我创建了"loc“将”经度“和”纬度“合并到一个字段中,这样我就可以使用MongoDB的地理空间索引了。我必须以字符串格式保存"loc“列,因为我要组合两个十进制值,中间有一个逗号。

当我将这个表导出到CSV时,我跳过了“经度”和“纬度”,因为我有了新的组合"loc“字段。

CSV如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
"geonameid", "name", "loc"
1, "Sweden", "18.068287,59.336341"

在我运行MongoImport进入"cities“集合之后,loc字段用引号括起来,例如:

代码语言:javascript
代码运行次数:0
运行
复制
{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : "18.068287,59.336341", }

在这里,我运行一个命令将"loc“转换为一个数组。感谢Stackoverflow上的另一位贡献者,我使用了以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
db.cities.find( { 'loc' : {$type : 2 } } ).forEach( function (x) { x.loc = new Array(x.loc); db.cities.save(x); });

结果是:

代码语言:javascript
代码运行次数:0
运行
复制
{ "_id" : ObjectId("50a9ed157db1bcfe22cddd0a"), "geonameid" : 20, "name" : "Sweden", "loc" : [ "18.068287,59.336341" ], }

如何在"loc“字段中删除gps坐标中的引号?我不会用MongoDB编写代码,也不介意等待java来执行这个任务。如果可以使用“经度”和“纬度”字段导出CSV并将它们合并到MongoDB中的新"loc“字段中,我也不介意,即使这不是一个漂亮的解决方案。我只需要让"loc“字段与地理空间索引一起工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-19 16:56:04

您将数字组合到"loc“fild中,所以现在它是一个字符串,并被引用。在导入到MongoDB之前,请将其重新分隔为数字。

但是你需要"loc“字段是一个数组才能在GEOindex中使用它--而数组在CSV中是不可能的。您需要找到一种方法将数据从MS Access导出到JSON,然后使用"mongoimport --jsonArray“命令将JSON导入到MongoDB。

导出访问JSON - http://www.divconq.com/2010/export-a-microsoft-access-database-to-json/

票数 0
EN

Stack Overflow用户

发布于 2012-12-29 21:49:00

将loc转换为可用的地理空间数组的命令为:

代码语言:javascript
代码运行次数:0
运行
复制
db.cities.find( { 'loc' : {$type : 2 } } ).forEach( function (x) { x.loc = x.loc.split(",").map(parseFloat); db.cities.save(x); });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13450234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档