【问题标题】:Size of Integer in MongomapperMongoapper 中整数的大小
【发布时间】:2011-12-20 03:07:45
【问题描述】:

我在 Mongomapper 中找不到 Integer 的限制数。 它可以在 MongoDB 中自动将“大整数”转换为 LongInt 吗?

【问题讨论】:

    标签: ruby-on-rails mongodb mongomapper


    【解决方案1】:

    bson 库为您/mongomapper 处理这个问题。如果您尝试序列化的东西是 bignum/fixnum,它会检查它是否适合 4 字节或 8 字节整数并相应地对其进行编码。它实际上检查了该值,因为 Fixnum 限制与 mongo 具有的 4 字节/字节边界不匹配。

    驱动对应位为here

    【讨论】:

    • 那段代码不是拒绝不适合有符号 64 位整数范围的整数吗?我没有看到任何自动转换代码。
    • 正确 - bson 不能表示这样的整数。该代码所做的是确保适合 32 位整数的内容使用 bson 的 4 字节类型存储,而适合 8 字节的内容存储在 bson 的 8 字节类型中。如果你超出了这个范围,那你就不走运了。
    • 啊,好吧,我误解了你的主人;)
    【解决方案2】:

    整数数据类型取决于您选择的 Mongo 安装方式。如果你选择 32 位,整数会上升到 32 位,所以大约是 20 亿。建议选择 64 位安装。

    【讨论】:

      【解决方案3】:

      MongoDB 以 BSON 格式存储其数据(即二进制 JSON)。 The specification for BSON 支持 32 位和 64 位整数。

      这里的关键是您的 Ruby 驱动程序和配置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 2011-11-10
        • 1970-01-01
        • 2011-10-28
        相关资源
        最近更新 更多