Javascript Mongodb$inc回报双倍
我正在尝试将Javascript Mongodb$inc回报双倍,javascript,mongodb,Javascript,Mongodb,我正在尝试将\u id设置为文档中所述的自动递增Int,这几乎可以正常工作,但在尝试插入记录时,函数返回的值是双精度,而不是整数,因此我尝试了以下更改 db.system.js.save({ _id : "getNextId", value : function (name) { var ret = db.counters.findAndModify( { query: { _id: name }, update: { $i
\u id
设置为文档中所述的自动递增Int
,这几乎可以正常工作,但在尝试插入记录时,函数返回的值是双精度
,而不是整数
,因此我尝试了以下更改
db.system.js.save({
_id : "getNextId",
value : function (name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return Math.ceil(ret.seq); //not working
//return parseInt(ret.seq); //not working
}
});
好吧,我试过了,效果很好
db.system.js.save({
_id : "getNextId",
value : function (name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return NumberLong(ret.seq); //working
}
});
JavaScript对于所有数值只有浮点
Number
类型,因此您必须使用shell中的和对象来表示MongoDB中的真正整数值
因此,parseInt
所做的是解析一个整数格式的字符串,但将该值作为浮点Number
返回。正如您所发现的,您需要将数值包装在MongoDB的一个整数对象中,以便将该值作为整数存储在数据库中:
return NumberInt(ret.seq); // For 32-bit integers
return NumberLong(ret.seq); // for 64-bit integers