我尝试在Mongodb3.4中运行一些Javascript NumberDecimal测试,但是输出永远都不正确,如果我改用NumberInt,那么结果是正确的。 Javascript不支持NumberDecimal类型吗?
以下是我的测试脚本:
var X=new NumberDecimal("100");
var Y=new NumberDecimal("100");
var RTNEqual=(X.valueOf()==Y.valueOf());
var RTNPlus=X+Y;
print("Equal=>" + RTNEqual + " RTNPlus=>" + RTNPlus)
Output:
Equal=>false RTNPlus=>NumberDecimal("100")NumberDecimal("100")
谢谢〜
最佳答案
mongo
shell 程序(从3.4.5开始)不支持NumberDecimal
值的算术运算。十进制类型不是JavaScript固有的,因此 shell 中的十进制值是表示存储在MongoDB中的BSON值的字符串。
根据在MongoDB问题跟踪器中对SERVER-19676的讨论:
但是,如果您通过聚合框架在服务器上进行操作,则完全支持十进制值:
var X=new NumberDecimal("100");
var Y=new NumberDecimal("100");
db.omnum.aggregate(
{ $project: {
_id: 0,
RTNEqual: { $eq: [X, Y] },
RTNPlus: { $sum: [X, Y] }
}}
)
输出:
{
"result": [
{
"RTNEqual": true,
"RTNPlus": NumberDecimal("200")
}
],
"ok": 1
}