我试着理解为什么当我将包含customId
的模型保存为number
时(例如61528564963650091
),它会将其保存为Double类型:
61528564963650091.0
如果数字很小,则会创建一个Int32
为了解决我的问题,我尝试使用Long
类型,但情况更糟......
架构示例:
{
customId: {
type: Number,
required: true,
}
}
如果有人能照亮我这个:)
答案 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