从文件导入数据时(在我的情况下为csv)mongoimport会自动为每个字段选择数据类型。
是否可以手动为特定字段选择数据类型? 我遇到的情况是,在我的文件中有电话号码,我想要的,我应该把它当作字符串,但mongoimport(非常正确)将这些电话号码视为一个数字(NumberLong)。
答案 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部分:
mongoimport
和mongoexport
无法可靠地保留所有丰富的BSON 数据类型,因为JSON只能表示类型的子集 BSON支持。因此,使用这些导出或导入的数据 工具可能会失去一定程度的保真度。请参阅MongoDB Extended JSON 更多信息。
使用mongodump和mongorestore保留类型。
答案 3 :(得分:2)
现在版本3.4以后mongoimport支持在导入数据时明确指定字段类型。见以下链接: https://docs.mongodb.com/manual/reference/program/mongoimport/#cmdoption--columnsHaveTypes