我有一个.tsv文件,如下所示,
Name City Mobile Country
A Hyd 877777 IN
B Ban 78899 IN
现在,我不希望存储所有字段。我需要一些特定的领域。我想使用mongoimport仅将名称,城市和移动字段导入Mongo DB。 我使用了以下命令,但它不能正常工作
mongoimport --db test --collection persons --type tsv --file persons.tsv --fields Name,City,Mobile
最终文档存储在Mongo DB中,如下所示:
{
"_id" : ObjectId("55accf948c59222984066646"),
"Name" : "A",
"Ciry" : "Hyd",
"Mobile" : "87777"
}
你能帮我解决一下吗?
答案 0 :(得分:7)
这是不可能的,因为使用mongoimport
只能导入包含数据库中数据的整个文件,而不能导入文件的特定内容。
要将tsv文件导入上面给出的数据库,您可以使用:
mongoimport --db test --collection persons --type tsv --file persons.tsv --headerline
<强>释强>
--headerline
如果使用--type csv或--type tsv,则使用第一行作为字段名称。 否则,mongoimport会将第一行导入为不同的文档。
如果您在导入JSON数据时尝试包含--headerline, mongoimport将返回错误。 --headerline仅适用于csv或tsv 进口。
如果您的tsv文件仅包含要导入的数据而不包含字段名称作为标题,则可以使用fields
中的mongoimport
属性
示例:mongoimport --db test --collection persons --type tsv --file persons.tsv --fields Name,City,Mobile,Country
<强>释强>:
--fields <field1[,field2]>, -f <field1[,field2]>
导入csv或时,指定以逗号分隔的字段名称列表 在第一行(即标题)行中没有字段名称的tsv文件 该文件。
如果您在导入JSON数据时尝试包含--fields, mongoimport将返回错误。 --fields仅适用于csv或tsv 进口。
答案 1 :(得分:0)
mongoimport
实用程序没有任何功能可以像您想要的那样对输入进行这种操作。这是&#34;设计&#34;因为还有其他工具可以为您处理。
值得注意的是&#34; pipe&#34; |
运算符,在Unix变体和Windows命令提示符shell中都受支持,仅举几例。所以mongoimport
本身可以读取&#34;标准输入&#34;而不是来自&#34;管道的给定--file
&#34;来自另一个进行过滤的进程的输入。
一个简单的&#34; perl&#34;示例(但在选择的脚本中遵循相同的):
perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv
那将&#34;剥离&#34;源persons.tsv
中的最后一个字段,因此输出为:
Name City Mobile
A Hyd 877777
B Ban 78899
然后简单地&#34;结合&#34;使用&#34; pipe&#34;的声明|
为了传递&#34;输入&#34;进入mongoimport
:
perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv | \
mongoimport --db test --collection persons --type tsv --headerline --ignoreBlanks
正在创建数据:
2015-07-21T09:53:40.726+1000 connected to: localhost
2015-07-21T09:53:40.741+1000 imported 2 documents
$ mongo
MongoDB shell version: 3.0.3
connecting to: test
> db.persons.find()
{ "_id" : ObjectId("55ad8a04ee3124750e1600e7"), "Name" : "A", "City" : "Hyd", "Mobile" : 877777 }
{ "_id" : ObjectId("55ad8a04ee3124750e1600e8"), "Name" : "B", "City" : "Ban", "Mobile" : 78899 }
答案 2 :(得分:0)
Mongoimport完整示例:
mongoimport --port 7812 -u“turkeyUserAdmin”-p“Turkey @ DB ^&amp; *” --authenticationDatabase“admin” - db“USA” - 收集B2B --type tsv --fields Database_Individual_ID.string(),Name.string(),Company.string() --columnsHaveTypes --file F:/JAYBk/Project/B2B/Data/USA_B2B_DATA.tsv