gpt4 book ai didi

mongodb - NumberLong 在 Mongo Shell 中的行为

转载 作者:可可西里 更新时间:2023-11-01 09:57:25 25 4
gpt4 key购买 nike

我在Mongo Shell中写了以下4条语句

i) NumberLong(3)

ii) NumberLong(3)+NumberLong(4)

iii) typeof NumberLong(3)

iv) typeof (NumberLong(3)+NumberLong(4))

及其相应的输出是

i) NumberLong(3)

ii) 7

iii) 对象

iv) 编号

虽然第二个结果使第四个结果显而易见,但我无法了解这种行为的开头或结尾。幕后发生了什么??我试图在 MongoDB 文档中找到基本概念,但找不到太多。请帮忙!!

最佳答案

Number 和 NumberLong 有什么区别?

JavaScript 目前只有一种数字类型,即 Number , 表示为 IEEE 754 double 浮点值(8 字节)。

MongoDB 的 BSON storage representation拥有比 JavaScript 更多的数字类型,包括 32 位有符号整数(4 字节)和 64 位有符号整数(8 字节)。

NumberInt()NumberLong() 构造函数是 data types in the mongo shell允许您创建整数值而不是使用 JavaScript 的默认 float 。它们作为自定义原型(prototype)实现,因此 typeof 将是 object(与作为 JavaScript 基本类型一部分的 number 相反)。

当您将 NumberLong()NumberInt() 值加在一起时,JavaScript 会将结果强制转换为 native number 类型,这就是为什么您的第 2 次和第 4 次测试的结果与第 1 次和第 3 次不同。

为什么要使用 NumberLong/NumberInt?

这些类型用于为 MongoDB 的底层 BSON 存储格式提供接口(interface)。

NumberNumberLong 相比,32 位整数 (NumberInt) 可以用一半的字节表示。

Number 相比,64 位整数 (NumberLong) 对于大整数值具有更高的精度。由于 double 浮点表示 reserves some bits对于指数,可以精确存储的最大 Number 是 253NumberLong 是 263-1 >.

关于mongodb - NumberLong 在 Mongo Shell 中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20475845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com