mongoimport选择字段类型

时间:2014-06-14 19:21:45

标签: mongodb

从文件导入数据时(在我的情况下为csv)mongoimport会自动为每个字段选择数据类型。

是否可以手动为特定字段选择数据类型? 我遇到的情况是,在我的文件中有电话号码,我想要的,我应该把它当作字符串,但mongoimport(非常正确)将这些电话号码视为一个数字(NumberLong)。

4 个答案:

答案 0 :(得分:8)

将CSV / TSV导入mongodb选项时 - columnsHaveTypes 可以帮助定义列,但文档似乎很不清楚。我试了好几次,直到最后成功。 您应该添加选项 - columnsHaveTypes 并更改 - 字段之后的每个列,并记住在“(”和“)”之前使用“\”。 例如,改变:

mongoimport -hfoohost -d bardb -c fooc --type tsv --fields col1,col2,col3 --file path/to/file.txt

mongoimport -h foohost -d bardb -c fooc --type tsv --fields col1.int32\(\),col2.double\(\),col3.string\(\) --columnsHaveTypes --file path/to/file.txt

答案 1 :(得分:5)

您可以做的是使用CSV导入这些数据,然后对mongo db中的现有数据运行update语句,将其转换为您想要的格式。

答案 2 :(得分:3)

请参阅文档中的Type Fidelity部分:

  

mongoimportmongoexport无法可靠地保留所有丰富的BSON   数据类型,因为JSON只能表示类型的子集   BSON支持。因此,使用这些导出或导入的数据   工具可能会失去一定程度的保真度。请参阅MongoDB Extended JSON   更多信息。

使用mongodumpmongorestore保留类型。

答案 3 :(得分:2)

现在版本3.4以后mongoimport支持在导入数据时明确指定字段类型。见以下链接: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption--columnsHaveTypes