Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb mongoimport选择字段类型_Mongodb - Fatal编程技术网

Mongodb mongoimport选择字段类型

Mongodb mongoimport选择字段类型,mongodb,Mongodb,从文件导入数据时(我是csv),mongoimport会自动为每个字段选择数据类型 是否可以为特定字段手动选择数据类型? 我遇到了这样的情况,当我的文件中有电话号码时,我想要并且应该将其作为字符串处理,但mongoimport(相当正确)将这些电话号码作为数字(NumberLong)处理.您可以使用CSV导入这些数据,然后对mongo db中的现有数据运行update语句,将其转换为所需的格式。请参阅文档中的部分: mongoimport和mongoexport不能可靠地保存所有富BSON 数据

从文件导入数据时(我是csv),mongoimport会自动为每个字段选择数据类型

是否可以为特定字段手动选择数据类型?
我遇到了这样的情况,当我的文件中有电话号码时,我想要并且应该将其作为字符串处理,但mongoimport(相当正确)将这些电话号码作为数字(NumberLong)处理.

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

请参阅文档中的部分:

mongoimport
mongoexport
不能可靠地保存所有富BSON 数据类型,因为JSON只能表示类型的子集 由BSON支持。因此,使用这些工具导出或导入的数据 工具可能会失去一定程度的保真度。有关详细信息,请参阅MongoDB扩展JSON 更多信息


使用和保留类型。

现在版本3.4以后的mongoimport支持在导入数据时显式指定字段类型。请参阅以下链接:

将CSV/TSV导入mongodb时,选项--columnsHaveTypes可以帮助定义columnstypes。但这份文件似乎很不清楚。我试了好几次,终于成功了。 您应该添加选项--columnsHaveTypes,并更改--fields之后的每一列,并记住在“(“and”)之前使用“\”。 例如,更改:

mongoimport -h foohost -d bardb -c fooc --type tsv --fields col1,col2,col3 --file path/to/file.txt
进入


我想当我需要从postgres或任何其他sql db导入数据时,mongorestore是不可能的。在这种情况下,我会按照@Avneesh的建议,导入数据并运行更新命令。也许这是最简单的。你可以在这里找到例子:谢谢。我尝试了:db.cdr.find({},{dst:1}).forEach(函数(x){x.dst=''+x.dst;db.cdr.save(x)}),它按预期工作。新的字符串选项没有。它把它变成了数组。有没有更有效的方法来做到这一点?:)为了避免使用scape括号,可以将字段括在双QOUTE中。这是shell而不是mongo导入的限制:mongoimport-h fooohost-d bardb-c fooc--type tsv--fields“col1.int32()、col2.double()、col3.string()”--columnsHaveTypes--file path/to/file.txt是否可以使用--fieldFile,我的意思是,我们可以将这些字段及其各自的类型定义到一个文件中,而不是在命令行中传递内联参数吗??
mongoimport -h foohost -d bardb -c fooc --type tsv --fields col1.int32\(\),col2.double\(\),col3.string\(\) --columnsHaveTypes --file path/to/file.txt