[英]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
的所有數值,所以你必須使用類型NumberInt
和NumberLong
對象在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.