为什么mongoose将我的号码存储为Double

时间:2018-06-07 13:16:34

标签: mongoose numbers double

我试着理解为什么当我将包含customId的模型保存为number时(例如61528564963650091),它会将其保存为Double类型:

61528564963650091.0

如果数字很小,则会创建一个Int32

为了解决我的问题,我尝试使用Long类型,但情况更糟......

架构示例:

{
  customId: {
    type: Number,
    required: true,
  }
}

如果有人能照亮我这个:)

1 个答案:

答案 0 :(得分:2)

32位整数的最大值是〜4 290 000 000,正如您所看到的,您实际上无法适应61 528 564 963 650 091

它不是关于mongo,它只是32位的限制。

Double通常是64位实现(这就是为什么它被称为double=2x32),这意味着它允许将更大的数字保存为您提供的数字。

如果我查看最新的mongoose文档:http://mongoosejs.com/docs/schematypes.html它看起来不支持“Long”(还要记住Javascript只有一个类型 - 数字 - 这是64位浮点数)

但有解决方案 - 您可以使用此模块:https://www.npmjs.com/package/mongoose-long