Numberlong(x) 和 Numberlong("x") 的区别
Diference between Numberlong(x) and Numberlong("x")
我在 MongoDB 数据库中存储了一些 XML 数据。一些数据存储为 Numberlong(1234)
,另一些数据存储为 Numberlong("12353")
。示例:
"nodes_id" : [
NumberLong(13879272),
NumberLong(252524625),
NumberLong(252524611),
NumberLong(252524630),
NumberLong(149809404),
NumberLong(605181143),
NumberLong("3068489546"),
NumberLong("3059300418"),
NumberLong(253351454),
NumberLong(253351438),
NumberLong(253348623),
NumberLong(253351472)
]
这两种有什么区别吗?
NumberLong(253351454)
只适用于足够小的数字,它们不需要...好吧,很长:shell 必须以某种方式在 JS 中表示它们,所以它只能代表
的数字
对于更大的数字,需要文本表示,因为没有足够大的可用数据类型,因此 NumberLong("3059300418")
和 3059300418 > 253351454
。
也就是说,不,没有区别。这只是 shell 或更笼统地说是 JS 和浮点数的限制。
警告:不要尝试用太大的数字调用构造函数,即不要尝试 db.foo.insert({"t" : NumberLong(1234657890132456789)});
因为这个数字对于双精度来说太大了,它会导致舍入错误。上面的数字将被转换为 NumberLong("1234657890132456704")
,显然这是错误的。
我在 MongoDB 数据库中存储了一些 XML 数据。一些数据存储为 Numberlong(1234)
,另一些数据存储为 Numberlong("12353")
。示例:
"nodes_id" : [
NumberLong(13879272),
NumberLong(252524625),
NumberLong(252524611),
NumberLong(252524630),
NumberLong(149809404),
NumberLong(605181143),
NumberLong("3068489546"),
NumberLong("3059300418"),
NumberLong(253351454),
NumberLong(253351438),
NumberLong(253348623),
NumberLong(253351472)
]
这两种有什么区别吗?
NumberLong(253351454)
只适用于足够小的数字,它们不需要...好吧,很长:shell 必须以某种方式在 JS 中表示它们,所以它只能代表
对于更大的数字,需要文本表示,因为没有足够大的可用数据类型,因此 NumberLong("3059300418")
和 3059300418 > 253351454
。
也就是说,不,没有区别。这只是 shell 或更笼统地说是 JS 和浮点数的限制。
警告:不要尝试用太大的数字调用构造函数,即不要尝试 db.foo.insert({"t" : NumberLong(1234657890132456789)});
因为这个数字对于双精度来说太大了,它会导致舍入错误。上面的数字将被转换为 NumberLong("1234657890132456704")
,显然这是错误的。