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中的所有字段,我不希望所有字段都被存儲。我需要一些特定的領域。如果可能,請分享一下命令嗎? –