Long(64位整数)
最后更新:2026-10-09
Long(64位整数)
Long是64位有符号整数(BSON类型名int64),范围约±9.2×10^18,mongosh中用`Long(42)`或别名`NumberLong(42)`构造。适合时间戳毫秒、大计数、大ID。超过JavaScript安全整数(约9×10^15)的值要用字符串构造,避免精度丢失。
| 分类 | BSON 类型 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
Long(<整数>)
Long("<大数字符串>")
NumberLong("9223372036854775807")
返回值:返回一个Long(int64)类型的BSON整数
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// Long:64位大整数
use shop
db.stats.insertOne({ total: Long('9223372036854775807') })
db.stats.find({ total: { $gt: Long(1000) } })
运行结果:
{ _id: ObjectId('...'), total: Long('9223372036854775807') }
📌 注意事项
- 超过Number.MAX_SAFE_INTEGER的值用字符串构造
- 不同驱动类型名不同:Java是Long、Python是Int64、Node是Long
- Int32与Long混存会导致$type检查不一致
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
QLong和NumberLong有区别吗?
A没有区别,NumberLong是Long在mongosh中的别名,构造的是同一种int64类型。
QLong能存多大的数?
A64位有符号,约±9.2×10^18,比JS安全整数大得多。
Q为什么Long要用字符串构造?
A超过约9×10^15的数字字面量在JS中会丢失精度,字符串构造才能保精确。