MongoDB Compass如何处理int64?

时间:2019-07-01 03:35:59

标签: javascript mongodb mongodb-compass

我已经阅读了有关int64的官方文档,并且需要使用NumberLong包装int64。但是我发现没有NumberLong可以使用一些特殊值: enter image description here

在我的图像中,我认为MongoDB指南针会将1128505640310804481像Javascript一样对待,并使用回合1128505640310804500(这是我从Javascript得到的)。 DB中的数据显示在int64中,因此我认为1128505640310804481正确存储为int64。由于1128505640310804500不等于1128505640310804481,我想我应该没有找到与过滤器匹配的数据,但是MongoDB Compass给出了结果。

所以我的问题是:当我如图所示在MongoDB Compass Filter中输入int64时, 它如何处理int64?为什么它可以匹配存储在数据库中的正确int64数据?

1 个答案:

答案 0 :(得分:0)

  

当我如图所示在MongoDB Compass Filter中输入int64时,它如何处理int64以及为什么它可以匹配存储在数据库中的正确int64数据?

首先,由于数据以BSON(二进制序列化格式)存储,因此MongoDB可以存储64位整数值。这样可以解决服务器中的问题。另请参见BSON Types

现在,对于MongoDB Compass,它能够通过自动广播识别数字的类型(int32,int64或Double)。当将int32编辑为超过32位的值,并且该值通过Number.isSafeInteger的+/-时,它将转换为int64,它会在编辑器中检测到该值。

执行类型检查的MongoDB Compass的一部分实际上是开源的。请参阅类型检查器代码:mongodb-js/hadron-type-checker/blob/master/src/type-checker.js。 NPM软件包为hadron-type-checker