为什么要NumberInt(1) == NumberInt(1) // false
?
背景:我编写了MongoDB脚本来比较某些字段上的文档。经过几个小时的挖掘,我发现NumberInt
比较无法正常工作。
比较数字的方式是什么?我在做:
答案 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默认将所有数字视为浮点值。