我正在使用MongoDB和本机节点驱动程序,并且需要准确存储可能大于int最大值2147483647的数字。我需要能够在跟踪使用情况时增加数字。我有什么选择?
我正在使用猫鼬。我遇到的问题是,当我$inc
过去2147483647时,它会将数字转换为double。如何强制Mongoose使用64位长整数NumberLong
?
我的架构看起来像这样
var schema = new Schema({
...
usedBandwidth: {type: Number, min: 0, default: 0}
});
我的$inc
看起来像这样
model.Account.update(
{_id: this.account},
{$inc: {usedBandwidth: this.size}},
function (err, doc) {}
);
答案 0 :(得分:7)
现在可以使用mongoose-long
插件在Mongoose中执行此操作。
require('mongoose-long')(mongoose);
var SchemaTypes = mongoose.Schema.Types;
var schema = new Schema({
...
usedBandwidth: {type: SchemaTypes.Long, min: 0, default: 0}
});
答案 1 :(得分:3)
MongoDB有一个原生的64位长整数类型,通常称为NumberLong
(至少在MongoDB javascript shell / driver中)。如果您正在使用node-mongodb-native驱动程序,我相信它只是被称为Long
(虽然我不确定,如果我错了,有人请纠正我)。对于$inc
类型的字段,NumberLong
按预期工作。