我正在使用 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 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。
有没有办法解决这个限制?