MongoDB: 使用带有 --columnsHaveTypes --headerline 的 mongoimport 添加日期

MongoDB: add a date using mongoimport with --columnsHaveTypes --headerline

我有一个 test.tsv TSV 文件,其中 header 看起来像这样

sample.string() organism.string()   capture.string()    sex.string()

我正在使用以下命令将我的文件导入 mongodb

mongoimport --quiet -d somedb --collection=somecollection --file=test.tsv --type tsv --mode upsert --upsertFields sample --columnsHaveTypes --headerline

我希望在导入文件时添加 mongodb 格式后的 date

我找到了 a way to do it while in mongodb but I can't seem to find anything about mongoimport

是否有如下所示的命令(或解决方法)允许我们添加文件内容的日期?

mongoimport --quiet -d somedb --collection=somecollection --file=test.tsv --type tsv --mode upsert --upsertFields sample --columnsHaveTypes --headerline --addDate

提前致谢。

我找到了一个解决方法:

首先,从 bash 中获取具有某种格式的日期:

date=$(date -u +"%d-%m-%Y %T")

现在,将此变量添加到 file.tsv 中的所有行,如下所示:

awk -v date="$date" '{print [=11=] "\t" date}' file.tsv

然后,我们可以通过添加日期格式类型来更改表头

$ sed -i '1s/.*/Sample.string()\tOrganism.string()\tCapture.string()\tSex.string()\tDate.date(02-01-2006 15:04:05)/' file.tsv
$ head file.tsv
Sample.string()     Organism.string()     Capture.string()     Sex.string()     Date.date(02-01-2006 15:04:05)

然后,我们可以用mongoimport导入:

$ mongoimport -d somedb --collection=somecollection --file=file.tsv --type tsv --mode upsert --upsertFields Sample --columnsHaveTypes --headerline
2019-09-30T11:23:37.934+0200    connected to: xxxx
2019-09-30T11:23:37.940+0200    imported 1 document