我通过此命令将数据导入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/