我在用Mongodb处理对于标准Int64格式而言太大的整数时遇到问题。为了举例说明我们在这里讨论的各种数字:我的意思是类似10683171315666225459389678813960790592
现在,我已经考虑过将其转换为Decimal128,这似乎可行。我遇到的问题是,我认为MongoDB在转换它们时会截断这些值。我正在使用:
db.NuAIS.find().forEach( function (x) { x.HilbertVal = parseFloat(x.HilbertVal); db.NuAIS.save(x); });
因此,我读取了db,将每个字符串值转换为Decimal并得到:1.0683171315666225e + 37。我的假设是MongoDB会存储实际值,而不管它声明了什么。
这是事实:这些值似乎被截断了,因为当我尝试使用MongoCompass上的原始字符串进行搜索时,我得到了一个假定唯一字符串的多个返回值。我假设mongoDB在X字符串后截断了小数点,因此只返回与搜索字符串的前X个数字匹配的小数,这意味着您将获得多个匹配而不是一个。
我的假设对吗?有没有一种方法可以避免使用十进制小数或者通过使用大于64位的整数来完全跳过整个问题?我将其保留为字符串,但是我需要将它们作为数字使用,查找在一定范围内的东西。
谢谢