【问题标题】:storing big integer in mongo db在mongodb中存储大整数
【发布时间】:2016-01-22 20:47:59
【问题描述】:

我有一个 Rails 应用程序,我的一张表在 mysql 中有一个大整数键。我希望从 mongodb 中的 mysql 表中存档一些数据,但不确定在 mongoid 中的字段语句中使用哪种类型来存储 orignal_id,我无意更改 mongoid 将生成的 id,我不是希望更改新表的 _id 字段。

【问题讨论】:

    标签: mysql ruby-on-rails mongodb


    【解决方案1】:

    如果您使用 mongoid,您可以将字段定义为整数。整数是 Ruby 中 Fixnum 或 Bignum 类的实例对象。如果对 Fixnum 的任何操作超出其范围,则该值会自动转换为 Bignum。

    【讨论】:

      【解决方案2】:

      JavaScript 中数值的唯一选择是数字。可以安全表示的最大整数是:9007199254740991。根据 mysql 文档,最大的 bigint 是 9223372036854775807,如果无符号则为两倍。

      如果保持保真度很重要,也许您应该将其保存为字符串。

      【讨论】:

      • 如果我将其保存为字符串,您如何确保 10000 出现在 2000 年之后,旧的 id 确实被存储了,因为它在其他表中被引用,但顺序仍然很重要
      • @JeffRossi 用0s 填充到可以预期的最大位数。
      • 零填充与我发布后的想法相同
      【解决方案3】:

      我不使用 Rails,但 Rails 中可能也存在 NumberLong。这是 64 位整数的包装器。使用唯一索引,您可能会得到类似的结果,就像在 MySQL 中一样。

      【讨论】:

        猜你喜欢
        • 2015-11-28
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-19
        • 2010-12-23
        • 1970-01-01
        相关资源
        最近更新 更多