mongodb 和 pymongo 文档大小 16Mb 限制

2024-06-19

我正在使用 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。

有没有办法解决这个限制?


遗憾的是,您不能超过每个文档 16MB 的 BSON 限制。您使用的 mongod 选项与文档大小无关。它指定 mongodb 命名空间文件的默认大小 - 与最大文档大小完全无关。正如文档所建议的,如果您确实需要存储大于 16MB 的对象,我会看看 GridFS API。

从文档中:

BSON文档

BSON 文档大小

BSON 文档的最大大小为 16 MB。

最大文档大小有助于确保单个文档无法 使用过多的 RAM 或在传输过程中使用过多的 RAM 的带宽。为了存储大于最大大小的文档,MongoDB 提供 GridFS API。请参阅 mongofiles 和您的文档 有关 GridFS 的更多信息,请参阅驱动程序。

命名空间文件的大小

命名空间文件不能大于 2047 MB​​。

默认情况下,命名空间文件为 16 MB。您可以配置 使用 nsSize 选项调整大小。

--nssize

默认值:16

指定名称空间文件的默认大小,这些文件 以 .ns 结尾。每个集合和索引都算作一个命名空间。

使用此设置可以控制新创建的命名空间文件的大小。 此选项对现有文件没有影响。最大尺寸为 命名空间文件大小为 2047 MB​​。默认值为 16 兆字节 提供大约 24,000 个命名空间。

http://docs.mongodb.org/manual/reference/limits/ http://docs.mongodb.org/manual/reference/limits/

http://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod http://docs.mongodb.org/manual/reference/program/mongod/#bin.mongod

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb 和 pymongo 文档大小 16Mb 限制 的相关文章

随机推荐

  • android 媒体播放器 - 如何禁用范围请求? (Nexus 7 上的音频流中断)

    我有一个音频流应用程序 它运行本地代理服务器 本地代理服务器与互联网流媒体源建立 http 连接 在本地获取并缓冲流数据 然后 在应用程序内部 我使用 MediaPlayer 连接到本地代理服务器 使用方法 mediaPlayer setD
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • AFNetworking XML 请求问题

    我在用着AFNetworking 2使用 JSON 响应 它工作正常 现在我必须将其转换为 XML 而不是使用 JSON 因为服务器响应是 XML 格式的 在我搜索之后 我找到了这段代码 但它不起作用 与 Charles 我发现请求是错误的
  • 父指令属性更改时子指令不会更新

    这是对这两个问题的后续 在父指令和子指令之间传递参数 https stackoverflow com questions 42814530 pass argument between parent and child directives
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 文本后面有粗下划线

    如何使用 span 和 css 在文本 ABC 后面重现这种下划线 我已经能够做下划线below嵌套的文本span和彩色的border bottom 但无法获取behind图像和above文本基线 p style font size 48p
  • Google Cloud Messaging - 立即收到或长时间延迟收到的消息

    我在大学最后一年的项目中使用谷歌云消息传递 一切正常 但我在使用 GCM 时遇到了一些麻烦 通常 消息要么几乎立即传递 要么有很大的延迟 我读过这篇文章 但我真的认为它不适用于这种情况 GCM 通常会在消息发送后立即传送消息 然而 这并不总
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • ubuntu 12.04 ruby​​ 2.0 Rails:找不到“thread_safe”

    我正在 ubuntu 12 04 上安装 Rails 使用以下方法手动安装 如何在 Ubuntu 12 04 上正确安装 ruby 2 0 0 https stackoverflow com questions 16222738 how t
  • 在 .NET 中记录 StackOverflowException

    最近 我的 NET 应用程序 asp net 网站 中出现了堆栈溢出异常 我之所以知道该异常是因为它出现在我的 EventLog 中 我知道 StackOverflow 异常无法被捕获或处理 但是有没有办法在它杀死您的应用程序之前记录它 我
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • H2 - (相当)长的 INSERT 失败,错误 42000

    H2 内存中 插入 错误 42000 尝试过版本 1 4 196 1 4 197 1 4 199 我还尝试在 H2 服务器 本地 上执行 INSERT 也失败 给出错误的行 抱歉 但出于安全原因 我无法生成更多 INSERT INTO tb
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 如果抛出RuntimeException,是否可以将其作为异常捕获?

    如果我有一个try抛出一个块RuntimException子类 可以是后续的catch块将其捕获为Exception 具体来说 public class MyAppException extends RuntimeException In
  • mongodb 和 pymongo 文档大小 16Mb 限制

    我正在使用 Windows 上的 showIncludes 标志和 nix 上的 H 标志来分析构建中的包含内容 我正在用 python 脚本解析这些信息 包含的每个文件都变成一个对象 列出其子文件 它包含的文件 和祖先 包含该文件的包含路