mongodb - MongoDB:无法比较 NumberInt?
问题描述
为什么NumberInt(1) == NumberInt(1) // false
?
背景:我编写了 MongoDB 脚本来比较某些字段的文档。经过几个小时的挖掘,我发现这种NumberInt
比较没有像我预期的那样工作。
比较数字的方法是什么?我在做:
解决方案
你做的比较正确。MongoDB shell 本质上是一个交互式 javascript shell。如果你typeof NumberInt(1)
在 shell 中这样做,它会告诉你它是一个对象。所以,你不能真的期望一个对象等于另一个对象。这就是为什么NumberInt(1) == NumberInt(1) => false
。
由于您只对比较值感兴趣,因此.value
函数可能在这里有所帮助。但是快速检查对象的属性不会产生任何结果:
> Object.keys(NumberInt(1))
[ ]
> Object.getOwnPropertyNames(NumberInt(1))
[ ]
如您所见,没有任何属性可用于了解对象的值。正如文档所说,NumberInt
它只是一个构造函数/包装器,用于创建 32 位整数,因为 mongo shell 默认将所有数字视为浮点值。
推荐阅读
- macos - 如何在 Mac 上运行 deno 编译的可执行文件?
- primefaces - org.primefaces.model.SelectableDataModel 启用选择时
- python - console_script 不能在可编辑模式下工作并给出 ModuleNotFoundError
- javascript - 如何使我的代码在性能方面更高效?
- r - 如何用这两个变量创建一个更简洁的表格?(R 编程)
- apache-flink - Flink 集成测试 S3
- python-3.x - Python Tkinter - 如何在窗格窗口中正确调整画布大小
- mongodb - 在文档mongoDB springboot中的对象列表中查找时间戳的最大值
- php - Google OAuth - 访问令牌和刷新令牌之间的区别
- json - Flutter 如何将地图从互联网 API 转换为列表?