mongodb是否将文件名作为附加字段导入?

mongodb是否将文件名作为附加字段导入?,mongodb,csv,data-import,Mongodb,Csv,Data Import,我有大量csv文件要加载到MongoDB中-我想做的(用于测试和数据沿袭)是加载到文件名中,记录作为文档中的一个附加字段来自该文件名-我查看了mongoimport语法,但似乎不可能在那里执行 我想要的是一个csv(即users1.csv)文件,其中包含 用户ID、名称、电子邮件 1,约翰,john@example.com 它将加载到一个集合中 _ID、用户ID、名称、电子邮件、源文件 XXXXXX,1,约翰,john@example.com,users1.csv 有什么方法可以实现这一点,任何

我有大量csv文件要加载到MongoDB中-我想做的(用于测试和数据沿袭)是加载到文件名中,记录作为文档中的一个附加字段来自该文件名-我查看了mongoimport语法,但似乎不可能在那里执行

我想要的是一个csv(即users1.csv)文件,其中包含 用户ID、名称、电子邮件 1,约翰,john@example.com

它将加载到一个集合中 _ID、用户ID、名称、电子邮件、源文件 XXXXXX,1,约翰,john@example.com,users1.csv

有什么方法可以实现这一点,任何人都可以推荐

1-我考虑过运行一些预处理来在文件中创建sourcename,但理想情况下我不想更改原始数据源

2-我考虑过用文件名追溯更新数据集-这似乎是一个不错的选择,但需要在加载集之间进行(例如,在导入users1.csv之后和导入users2.csv之前)


有没有人对这样做的优雅方式有什么建议?非常感谢任何人的输入。

我不确定您为什么不能使用mongo导入

mongoimport -d databaseToUse -c Collection --type csv --ignoreBlanks --file users1.csv --headerline
--headerline使用第一行作为字段名,这应该可以导入文件,没有问题

如果愿意,可以稍后指定字段

--fields <field1[,field2]>, -f <field1[,field2] etc etc>
也许是这样的

从初始导入开始,您可以使用字段的
-f
参数在1 go中添加详细信息

类似这样的内容将创建字段

mongoimport -d databaseToUse -c Collection --type csv --ignoreBlanks --file users1.csv -f "id, userID, name, email, sourceFile" 
然后,您需要在另一个1行程序中更新整个集合

重要的是。。和仅导入工具。不是即时导入和编辑

更新功能可以是以下内容:

dataBaseToUse.Collection.update(
  {
     $set: { sourceFile: "users1.csv" }
  })

我需要100%测试这些,以确保它可以正常工作!:)

你在mongoimport遇到了什么问题?您试过了吗?我试过mongoimport,没有出现任何错误,但在语法中看不到将当前文件名用作字段的选项…mongoimport无法为您添加文件名。你应该自己做1、2或使用csv库和驱动程序来编写导入作业。我能够导入数据,没有任何问题,但是我想不出一种方法来自动处理一批文件并添加额外的文件名字段-will doing--fields@mr_gooding我已经更新了答案现在我看到了两个步骤。有一个
$setOnInsert
可用,但我似乎无法将其应用于mongoimport方法!:(谢谢,这听起来像是一种方法-然后我可以使用第二个更新命令调用一个名为mongoimport然后是mongo.exe的包装器脚本来设置源文件。感谢您在这方面的帮助-我明天有机会尝试时会通知您。是否可以添加“key”:“value”作为导入文件中不存在的附加字段配对?
dataBaseToUse.Collection.update(
  {
     $set: { sourceFile: "users1.csv" }
  })