Arrays 将.csv导入MongoDB,创建包含对象的数组
我开始熟悉MongoDB,现在我必须将一个相对较大的.csv文件导入Mongo集合。到目前为止,我能够导入.csv文件而没有大问题(使用mongoimport或通过Studio 3T)。但是,我想为每个特定文档创建一些数组。也许通过举例说明我的数据,我可以让它更清楚Arrays 将.csv导入MongoDB,创建包含对象的数组,arrays,mongodb,csv,object,import,Arrays,Mongodb,Csv,Object,Import,我开始熟悉MongoDB,现在我必须将一个相对较大的.csv文件导入Mongo集合。到目前为止,我能够导入.csv文件而没有大问题(使用mongoimport或通过Studio 3T)。但是,我想为每个特定文档创建一些数组。也许通过举例说明我的数据,我可以让它更清楚 worker_id | gender | birth | employer_id | start | end | type | ----------------------------------------
worker_id | gender | birth | employer_id | start | end | type |
---------------------------------------------------------------------------
CAD1213 | M | 1990 | WRF1119 | 15jun2018 | 31dec2018 | 11.1.1 |
CAD1213 | M | 1990 | WAC1134 | 1jan2019 | 31dec2019 | 12.1.1 |
CAF1456 | F | 1972 | WAC1134 | 15aug1988 | 17sep2016 | 55.0.1 |
CAR5567 | F | 1991 | WER9280 | 15jun2018 | 31dec2018 | 1.1.1 |
CAR5578 | F | 1989 | WHI1176 | 15jun2011 | 1nov2011 | 12.2.5 |
CAR5578 | F | 1989 | WHI1176 | 2nov2011 | 31dec2012 | 12.2.5 |
这只是一个字段(列)很少的示例。我有工作合同的数据,其中:工人id是工人的身份,性别,出生是工人的出生年份,雇主id是每个雇主的身份,开始和结束是每个具体工作合同的开始和结束,而类型是具体工作合同。整个数据库显然具有更多字段的特征
使用classic.csv导入,对于每一行,我将获得一个具有特定ID的不同文档,每一列将表示字段。但是,我希望将worker_id的值设为“_id”(虽然不一定)。如您所见,某些worker_id在列中重复(在一个超过1700万行的文件中,您可以想象我可以拥有多少个副本),因此无法将此字段选为_id
这就是我努力想要得到的。我想创建一个数组(例如称为contracts),其中包含每个特定contract的信息,因此是对象,在本例中是列employer\u id、start、end和type。对于某些worker,数组中只有一个元素(示例中为CAF1456和CAR5567),而对于其他worker,则有多个元素(示例中为CAD1213和CAR5578)。因此,假设性文件如下所示:
_id: "CAD1213"
gender: "M"
birth: "1990"
contracts: Array
0: Object
employer_id: "WRF1119"
start: "15jun2018"
end: "31dec2018"
type: "11.1.1"
1: Object
employer_id: "WAC1134"
start: "1jan1988"
end: "31dec2019"
type: "12.1.1"
_id: "CAF1456"
gender: "F"
birth: "1972"
contracts: Array
0: Object
employer_id: "WAC1134"
start: "15aug1988"
end: "17sep2016"
type: "55.0.1"
_id: "CAR5567"
gender: "F"
birth: "1991"
contracts: Array
0: Object
employer_id: "WER9280"
start: "15jun2018"
end: "31dec2018"
type: "1.1.1"
_id: "CAR5578"
gender: "F"
birth: "1989"
contracts: Array
0: Object
employer_id: "WHI1176"
start: "15jun2011"
end: "1nov2011"
type: "12.2.5"
1: Object
employer_id: "WHI1176"
start: "2nov2011"
end: "31dec2012"
type: "12.2.5"
据我所知,这个过程不能直接用mongoimport执行,那么它必须在导入整个.csv文档之后执行(我猜)。我希望有人能给我一些提示,建议或链接,我可以找到一些帮助实现这一结构。此外,如果文件的其他结构更适合我的例子,我很想知道
先谢谢你。想一想。最终数据模型应驱动CSV文件的整个导入过程。mongoimport具有仅导入字段子集的选项;您还可以将数据导入多个集合(按数据分类)。然后,基于数据模型,使用查询和聚合框架,甚至是应用程序,将数据合并在一起,细化数据,等等。通过使用Python,我导入了.csv数据库,并从中生成了一个带有嵌套数组的.json类型的文档。因此,使用pymongo,我将文档导入到我的MongoDB数据库中。你可以在这里修改代码:只是一些想法。最终数据模型应驱动CSV文件的整个导入过程。mongoimport具有仅导入字段子集的选项;您还可以将数据导入多个集合(按数据分类)。然后,基于数据模型,使用查询和聚合框架,甚至是应用程序,将数据合并在一起,细化数据,等等。通过使用Python,我导入了.csv数据库,并从中生成了一个带有嵌套数组的.json类型的文档。因此,使用pymongo,我将文档导入到我的MongoDB数据库中。您可以在此处修改代码: