2015-01-20 45 views
2

我在MongoDB数据库中存储了一些XML数据。一些数据存储为Numberlong(1234),另一些存储为Numberlong("12353")。例如:Numberlong(x)和Numberlong(“x”)之间的差异

"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) 
] 

这两种类型有什么区别吗?

回答

1

NumberLong(253351454)只适用于足够小,他们并不需要为数字......嗯,长:外壳必须JS代表他们不知何故,所以它只能代表数字,

对于较大数字,因为没有足够大的数据类型可用,所以需要文本表示,因此NumberLong("3059300418")3059300418 > 253351454

换句话说,不,没有区别。这只是shell的限制,或者更一般地说,是JS和浮点数的限制。

警告:不要尝试调用构造函数的数量过大,即不要尝试db.foo.insert({"t" : NumberLong(1234657890132456789)});由于该数字对于双精度来说太大,因此会导致舍入误差。以上数字将被转换为NumberLong("1234657890132456704"),这显然是错误的。

+0

不错,很高兴知道这个mongo shell的限制+1 – Disposer 2015-01-20 21:24:27

+0

谢谢,明白了:) – Storres 2015-01-21 03:18:41

相关问题