mongodb - Mongo导入数据类型

标签 mongodb grails

我通过此命令将数据导入mongodb

mongoimport -d dataBase --collection ip2location --type csv --file "/home/oodles/git/csv/IP2LOCATION-LITE-DB11.CSV" --fields _id,ipFrom,ipTo,countryCode,countryName,regionName,cityName,latitude,longitude,zipCode,timeZone

导入成功
但问题是
db.ip2Location.find().pretty()

得到
    "_id" : ObjectId("52be7f25c80e0735273985bf"), ///here is requirement need "_id" : NumberLong(1)
    "ipFrom" : NumberLong(16777216),
    "ipTo" : NumberLong(16777471),
    "countryCode" : "AU",
    "countryName" : "AUSTRALIA",
    "regionName" : "QUEENSLAND",
    "cityName" : "SOUTH BRISBANE",
    "latitude" : -27.48333,
    "longitude" : 153.01667,
    "zipCode" : 4101,
    "timeZone" : "+10:00"

第一行是“_id”:ObjectId(“52be7f25c80e0735273985bf”),
但我需要这样:“id”:NumberLong(1)

CVS数据样本
"16777216","16777471","AU","AUSTRALIA","QUEENSLAND","SOUTH BRISBANE","-27.483330","153.016670","4101","+10:00"

最佳答案

csv data sample

"16777216","16777471","AU","AUSTRALIA","QUEENSLAND","SOUTH BRISBANE","-27.483330","153.016670","4101","+10:00"



示例行与提供的--fields列表不匹配;它少一个 Realm 。第一个字段应该是您要使用的_id(或您的示例中的1)。

更正的行:

1, "16777216","16777471","AU","AUSTRALIA","QUEENSLAND","SOUTH BRISBANE","-27.483330","153.016670","4101","+10:00"



我进行了测试,这在MongoDB 2.0.4中按预期工作。

我无法重现自动添加_id而缺少第一个字段值的结果;当我尝试使用MongoDB 2.0.4时,它按列出的顺序将值分配给字段,以便_id变为16777216,ipFrom为16777471,等等。我怀疑您可能正在查看插入在较早的mongoimport运行中的文档,在该运行中您的--fields列表做了不包括_id

您还应该知道,仅mongoimport 会插入数据(它不会进行更新或更新)。如果已经存在带有给定_id的文档,那么mongoimport将忽略CSV的那一行。

保持字段和CSV数据同步的更简单方法是将字段列表作为CSV的第一行,然后使用mongoimport --headerline ...而不是--fields

关于mongodb - Mongo导入数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812297/

相关文章:

java - 如何获取 mongodb 中的插入执行时间?

mongodb - 日志文件存在于日志目录中,但在未启用日志记录的情况下启动

javascript - ExpressJS 中最好的 session 存储 - NodeJS

java - 使用spring data mongodb进行组聚合

database - 如何使用Grails和多个Postgresql数据库架构

python - 使用 Mongodb 在 Python Flask 应用程序中查找返回空游标的查询

grails - 从 .js 文件创建指向资源的链接

Grails 运行应用程序 "Property source name must contain at least one character"

grails - 命令对象仅在 Controller 中,还是可以传递给服务层?

grails - 将启动Grails项目发布到cloudfoundry