MongoDB:无法比较NumberInt?

时间:2019-12-16 12:43:45

标签: mongodb mongodb-query mongo-shell

enter image description here

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

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

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

enter image description here

1 个答案:

答案 0 :(得分: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默认将所有数字视为浮点值。