Javascript MongoDB Compass如何处理int64?

Javascript MongoDB Compass如何处理int64?,javascript,mongodb,mongodb-compass,Javascript,Mongodb,Mongodb Compass,我已经阅读了关于int64的官方文档,我需要使用NumberLong包装器来包装int64。但我发现有一些特殊的值可以不用长的数字来使用: 在我的图片中,我认为MongoDB Compass会像Javascript一样将1128505640310804481视为双精度,并使用1128505640310804500(这是我从Javascript获得的)。DB中的数据显示在int64中,因此我认为11285056440310804481正确存储为int64。由于112850564031080450

我已经阅读了关于int64的官方文档,我需要使用NumberLong包装器来包装int64。但我发现有一些特殊的值可以不用长的数字来使用:

在我的图片中,我认为MongoDB Compass会像Javascript一样将1128505640310804481视为双精度,并使用1128505640310804500(这是我从Javascript获得的)。DB中的数据显示在int64中,因此我认为11285056440310804481正确存储为int64。由于1128505640310804500不等于1128505640310804481,我想我应该找不到与我的过滤器匹配的数据,但MongoDB Compass会给出结果

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

当我在MongoDB Compass筛选器中输入int64(如图所示)时,它是如何处理int64的,以及为什么它可以匹配存储在DB中的正确int64数据

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

现在,对于MongoDB Compass,它能够通过自动转换识别数字类型(int32、int64或Double)。当
int32
被编辑为超过32位的值时,它在编辑器中检测该值,该值通过+/-然后转换为
int64


MongoDB Compass中进行类型检查的部分实际上是开源的。请参阅类型检查器代码:。NPM包是

谢谢回复,如果我理解正确的话,可以在MongoDB Compass中输入int64值,就像我的屏幕截图一样使用它吗?