我通过此命令将数据导入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"
答案 0 :(得分:1)
csv数据样本
“16777216”,“16777471”,“AU”,“AUSTRALIA”,“QUEENSLAND”,“SOUTH BRISBANE”,“ - 27.483330”,“153.016670”,“4101”,“+ 10:00”
示例行与提供的--fields
列表不匹配;它有一个字段少。第一个字段应该是您要使用的_id
(或者根据您的示例使用1
)。
更正后的行:
1,“16777216”,“16777471”,“AU”,“AUSTRALIA”,“QUEENSLAND”,“SOUTH BRISBANE”,“ - 27.483330”,“153.016670”,“4101”,“+ 10:00”< / p>
我测试过,这在MongoDB 2.0.4中按预期工作。
我无法重现您自动添加_id
且第一个字段值丢失的结果;当我尝试使用MongoDB 2.0.4时,它按照列出的顺序为字段分配值,以便_id
变为16777216,ipFrom
为16777471等。我怀疑您可能正在查看插入的文档早期mongoimport
会在您的--fields
列表未包含_id
的位置运行。
您还应该知道mongoimport
仅插入数据(它不会执行更新或upsert)。如果已存在包含_id
而非mongoimport
的文档,则会忽略该行的该行。
保持字段和CSV数据同步的更简单方法是将字段列表作为CSV中的第一行,然后使用mongoimport --headerline ...
代替--fields
。