我正在尝试将_id
设置为自动增量Int
,如文档中所述https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/哪个工作正常,但在尝试插入记录时,函数正在返回值为double
而不是integer
所以我尝试了以下更改。
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
}
});
答案 0 :(得分:3)
JavaScript只有所有数值的浮点Number
类型,因此您必须在shell中使用NumberInt
和NumberLong
个对象来表示MongoDB中的真实整数值。
所以parseInt
正在做的是解析整数格式的字符串,但将该值作为浮点Number
返回。正如您所发现的,您需要将数值包装在MongoDB的一个整数对象中,以便将值作为整数存储在数据库中:
return NumberInt(ret.seq); // For 32-bit integers
return NumberLong(ret.seq); // for 64-bit integers
答案 1 :(得分:0)
好的,我试过这个,它工作正常
{'we': 14, 'is': 12, 'peace': 16, 'at': 17, 'want': 15, 'our': 10, 'home': 18, 'you': 0, 'went': 7, 'nice': 13}