Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 如果使用jsonArray,则对Mongo的导入限制为16MB_Mongodb - Fatal编程技术网

Mongodb 如果使用jsonArray,则对Mongo的导入限制为16MB

Mongodb 如果使用jsonArray,则对Mongo的导入限制为16MB,mongodb,Mongodb,我正在使用Mongo2.6.1。我想从大于16MB的json文件导入数据。json是一个文档数组。根据他们的文档,如果我使用--jsonArray选项,文件只能是16MB,请参阅 奇怪的是,我已经成功导入了大于16MB(24MB)的数据,使用mongoimport没有问题,方法是: mongoimport -db mydb --collection product --file products.json --jsonArray 那么16MB的限制是什么呢?16MB是MongoDB。这意味着M

我正在使用Mongo2.6.1。我想从大于16MB的json文件导入数据。json是一个文档数组。根据他们的文档,如果我使用
--jsonArray
选项,文件只能是16MB,请参阅

奇怪的是,我已经成功导入了大于16MB(24MB)的数据,使用mongoimport没有问题,方法是:

mongoimport -db mydb --collection product --file products.json --jsonArray
那么16MB的限制是什么呢?16MB是MongoDB。这意味着MongoDB中的任何文档都不能超过16MB

注意,MongoDB文档的JSON表示可能会超过这个限制,因为BSON更紧凑

--jsonArray
标志的问题是
mongoimport
首先将整个
.json
文件作为单个文档读取,然后对其每个元素执行导入,因此会受到BSON文档大小限制的影响

新MongoDB版本(
2.5.x
及更高版本)的解决方案 我刚刚用最新的MongoDB
2.6.4
测试了
mongoimport
,使用了非常大的JSON数组(~200MB),效果非常好

我非常肯定,在MongoDB
2.2.x
中,这样的操作是不可能的。因此,看起来好像只是忘记了更新
mongoimport
文档

我搜索了MongoDB bug追踪器,然后找到了它。根据它的说法,这个问题在一年前就解决了,修复程序是通过MongoDB
2.5.0
发布的

因此,请随意导入大型JSON文档

旧MongoDB版本的解决方案(早于
2.5.0
) 如果您使用的是旧版本的MongoDB,那么仍然可以导入大量文档,使用
--type json
标志而不是
--jsonArray
。但它假定要从中导入的文件具有特殊的结构。它类似于JSON格式,只是每行只允许一个文档,每个文档后面都不允许有逗号:

{ name: "Widget 1", desc: "This is Widget 1" }
{ name: "Widget 2", desc: "This is Widget 2" }
奇怪的是,我已经成功导入了大于16MB(24MB)的数据,使用mongoimport没有问题,方法是:

mongoimport -db mydb --collection product --file products.json --jsonArray

如果您对以这种方式导入的数据感到满意,则不必担心16MB的限制。该限制适用于集合中的每个记录(文档)。16MB的文本数据非常多——你可以在这么大的空间里拥有整本书——因此,单个记录的大小超过16MB是极不寻常的

面对类似的问题,我想16MB的限制在旧版本中仍然存在。尽管在任何情况下都有办法,但只要使用LinuxSED命令将包含jsonArray的json转换成普通的json文件,这将删除一些初始部分和结束部分。
然后,您可以使用普通的mongoimport命令导入文件。

等等,您说您不能使用mongoimport,但是您说您可以使用完全相同的选项?是哪一个?那么如何导入大型json文档?我很快就会达到这个极限。