Mongodb $ inc返回双倍

时间:2015-11-05 19:13:54

标签: javascript mongodb

我正在尝试将_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
   }    
 });

2 个答案:

答案 0 :(得分:3)

JavaScript只有所有数值的浮点Number类型,因此您必须在shell中使用NumberIntNumberLong个对象来表示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}