簡體   English   中英

Mongodb $ inc返回雙倍

[英]Mongodb $inc returns double

我正在嘗試按照文檔https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/中的說明將_id設置為自動增量Int ,它幾乎可以正常工作,但是在嘗試時要插入記錄,函數將返回的值是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
   }    
 });

JavaScript的只有浮點Number的所有數值,所以你必須使用類型NumberIntNumberLong對象在shell MongoDB中代表真正的整數值。

因此parseInt所做的是解析整數格式的字符串,但是將該值作為浮點數Number 正如您所發現的那樣,您需要將數值包裝在一個整數對象中,以供MongoDB使用,以便將該值作為整數存儲在數據庫中:

return NumberInt(ret.seq);  // For 32-bit integers

return NumberLong(ret.seq); // for 64-bit integers

好吧,我嘗試過了,一切正常

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
}    
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM