如何在 Mongo shell 中对 NumberLong 值执行精确算术?据我了解,Javascript 只有一种数字类型 -number
- 通常限制为 54 位浮点精度。
使用(例如)标准加法的直接算术显示将强制转换为较低精度类型:
> NumberLong("123456789012345678")+NumberLong("1")
123456789012345680
> NumberLong("123456789012345678")+NumberLong("2")
123456789012345680
我可以看到如何使用字符串表示形式提取 NumberLong 的部分,但这似乎效率低下,并且对于增量或除法等算术运算没有用处。
MongoDB 使用BSON 64 位 Int 类型 http://bsonspec.org/#/specification (蒙戈类型代码 18 http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24type) 对于 NumberLong。 db 内核可以通过执行更新操作对这些元素(用 C++ 编写的内核)执行精确算术,但如果您想在 javascript shell 中执行此操作,您将需要一个类似的库this one http://docs.closure-library.googlecode.com/git/closure_goog_math_long.js.html来自谷歌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)