Double(双精度浮点数)
最后更新:2026-10-09
Double(双精度浮点数)
Double是MongoDB默认的数值类型,64位IEEE 754双精度浮点,范围约±1.8×10^308。mongosh中裸写的数字(如3.14)默认就是Double。适合科学计算、百分比、坐标等近似数值;金额等要求精确十进制的场景用Decimal128。
| 分类 | BSON 类型 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ price: 3.14 } // 裸写即Double
NumberDouble(3.14) // 显式构造
{ price: { $lt: 10.5 } }
返回值:返回一个Double类型的BSON浮点数
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// Double:浮点比较与聚合
use shop
db.products.find({ price: { $gte: 9.99 } })
db.products.aggregate([{ $group: { _id: null, avg: { $avg: '$price' } } }])
运行结果:
// 返回price大于等于9.99的商品与平均价
📌 注意事项
- 0.1+0.2在Double下不等于0.3,金额用Decimal128
- 裸写整数42在mongosh中也是Double
- 与Int32比较时$eq不匹配,必要时用$convert
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
QDouble和Decimal128选哪个?
A近似计算(测量、坐标)用Double;金额等要求精确十进制的用Decimal128。
Qmongosh里42是什么类型?
ADouble。要存32位整数用Int32(42),64位用Long(42)。
QDouble精度有多少位?
A约15-17位十进制有效数字,超出部分会按二进制舍入。