mongoimport
实用程序没有任何功能可以对您的输入进行这种操作,就像您自己想要的一样。这是“通过设计”,因为还有其他工具可以为您处理。
值得注意的是,在Unix变体和Windows命令提示符shell中都支持“pipe”|
运算符。因此,mongoimport
本身可以从“标准输入”中读取,而不是从进行过滤的另一个进程的“管道”输入中给出--file
。
一个简单的“perl”的例子(但遵循相同的在所选择的脚本):
perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv
这将“条”从源persons.tsv
最后一个字段,以便输出为:
Name City Mobile
A Hyd 877777
B Ban 78899
然后仅仅是为了“结合”的表述与“管” |
到“输入”进入mongoimport
:
perl -pe 'chomp($_); @p = split(/\t/,$_); pop(@p); $_ = join("\t",@p) . "\n";' < persons.tsv | \
mongoimport --db test --collection persons --type tsv --headerline --ignoreBlanks
其中hapily创建数据:
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 }
我没有使用--headerline,我正在使用--fields only ..仍然不起作用 –
我在说你必须使用--headerline,否则它会将第一行视为不同的文档,而不是作为字段标题。 –
如果我使用--headerline,它将存储Mongo DB中的所有字段,我不希望所有字段都被存储。我需要一些特定的领域。如果可能,请分享一下命令吗? –