Mongodb Mongo壳中NumberLong的行为
我在Mongo Shell中编写了以下4条语句 i)Mongodb Mongo壳中NumberLong的行为,mongodb,mongo-shell,Mongodb,Mongo Shell,我在Mongo Shell中编写了以下4条语句 i) NumberLong(3) ii)NumberLong(3)+NumberLong(4) iii)编号的类型长(3) iv)typeof(NumberLong(3)+NumberLong(4)) 其相应的输出为: i) NumberLong(3) ii)7 iii)对象 iv)编号 虽然第二个结果使第四个结果变得明显,但我无法了解这种行为的头绪。幕后发生了什么??我试图在MongoDB文档中找到基本概念,但找不到太多。请帮忙 数字和长数字有什
NumberLong(3)
ii)NumberLong(3)+NumberLong(4)
iii)编号的类型长(3)
iv)typeof(NumberLong(3)+NumberLong(4))
其相应的输出为:
i) NumberLong(3)
ii)7
iii)对象
iv)编号
虽然第二个结果使第四个结果变得明显,但我无法了解这种行为的头绪。幕后发生了什么??我试图在MongoDB文档中找到基本概念,但找不到太多。请帮忙 数字和长数字有什么区别?
JavaScript目前只有一个数字类型,表示为IEEE 754双精度浮点值(8字节)
MongoDB的数字类型比JavaScript多,包括32位有符号整数(4字节)和64位有符号整数(8字节)
numberrint()
和NumberLong()
构造函数允许您创建整数值,而不是使用JavaScript的默认浮点数。这些是作为定制原型实现的,因此typeof
将是object
(与作为JavaScript基本类型一部分的number
相反)
当您同时添加NumberLong()
或numberrint()
值时,JavaScript将结果强制转换为本机number
类型,这就是为什么您在第二次和第四次测试中的结果不同于第一次和第三次测试的原因
为什么要使用NumberLong/numberprint?
这些类型用于提供MongoDB底层BSON存储格式的接口
与Number
或NumberLong
相比,32位整数(numberrint
)可以用一半字节表示
与数字相比,64位整数(
NumberLong
)对于大整数值具有更高的精度。由于指数采用双精度浮点表示法,因此可精确存储的最大数字为253,而数字长度为263-1的数字为Ahhhh…即将为此提供奖金…您来得正是时候,救了我…:)谢谢。。