MongoDB:无法比较NumberInt?

问题描述 投票:0回答:1

enter image description here

为什么NumberInt(1) == NumberInt(1) // false

背景:我编写了MongoDB脚本来比较某些字段上的文档。经过几个小时的挖掘,我发现NumberInt比较无法正常工作。

比较数字的方式是什么?我在做:

enter image description here

mongodb mongodb-query mongo-shell
1个回答
1
投票

您正确地进行了比较。 MongoDB shell实际上是一个交互式javascript shell。如果在外壳中执行typeof NumberInt(1),它将告诉您这是一个对象。因此,您不能真正期望一个对象等于另一个对象。这就是为什么NumberInt(1) == NumberInt(1) => false

由于您仅对比较值感兴趣,因此.value函数可能对此有所帮助。但是快速检查对象的属性不会产生任何结果:

> Object.keys(NumberInt(1))
[ ]
> Object.getOwnPropertyNames(NumberInt(1))
[ ]

如您所见,没有任何属性可用于了解对象的值。正如文档所说,NumberInt只是用于创建32位整数的构造函数/包装器,因为mongo shell默认将所有数字视为浮点值。

© www.soinside.com 2019 - 2024. All rights reserved.