【发布时间】:2014-08-29 00:40:56
【问题描述】:
我正在使用 Windows 上的“/showIncludes”和 *nix 标志上的“-H”分析构建中的包含。
我正在使用 python 脚本解析此信息。包含的每个文件都会变成一个对象,该对象列出其子项(它包含的文件)和祖先(包含此文件的包含路径)。
创建这些对象后,我想使用 pymongo 将它们推送到 mongodb 数据库中。
这适用于 99% 的包含。但是〜5非常大。当我尝试将它们添加到 mongodb 时,它会抱怨。
Traceback (most recent call last):
File "mongodb.py", line 94, in <module>
includes_collection.update({'id': include.include_id}, { 'ancestor_tree': ancestor_tree_ids } )
File "C:\Python27\lib\site-packages\pymongo-2.7.2-py2.7-win-amd64.egg\pymongo\collection.py", line 551, in update
docs, check_keys, self.uuid_subtype, client)
DocumentTooLarge: command document too large
阅读 mongo 这似乎是一种设计选择。默认情况下,文档不能超过 16Mb。但这可以用 --nssize 命令行选项覆盖。见
http://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod
所以我用 --nssize 32/64/128 重新运行了 mongod。我认为我的任何包含对象都不超过 128Mbs。但问题依然存在。
所以我现在想知道 pymongo 是否应该受到责备。它是否尊重此服务器设置?
我的mongod版本是
数据库版本 v2.6.3 2014-08-28T16:56:51.534+0100 git 版本:255f67a66f9603c59380b2a389e386910bbb52cb
我正在使用 pymongo-2.7.2-py2.7-win-amd64。
有没有办法解决这个限制?
【问题讨论】:
-
16 MB对于单个文档来说是相当多的数据... -
我很惊讶我能成功。但是我的一些包含的成本约为 250 万。其中成本是包含的次数 X 包含的次数。此外,包含记录每个路径到其自己的包含。例如A 包括 B,其中包括 C,其中包括 D。如果 D 被包括一百万次,我猜这些路径可以加起来。