2015-01-20 47 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

相關問題