Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo壳中NumberLong的行为_Mongodb_Mongo Shell - Fatal编程技术网

Mongodb Mongo壳中NumberLong的行为

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文档中找到基本概念,但找不到太多。请帮忙 数字和长数字有什

我在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文档中找到基本概念,但找不到太多。请帮忙

数字和长数字有什么区别? 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…即将为此提供奖金…您来得正是时候,救了我…:)谢谢。。