$gt(大于)
最后更新:2026-10-09
$gt(大于)
$gt 是查询比较操作符,选择字段值严格大于指定值的文档。`{ age: { $gt: 21 } }` 匹配年龄大于 21 的用户,恰好 21 岁不匹配。常用于范围查询:价格下限、日期筛选、分数门槛。与 $gte 的区别在于是否包含边界值。字符串字段按字典序比较,日期字段按时间先后比较。
| 分类 | 比较 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ <字段>: { $gt: <值> } }
⚙️ 参数
| 字段 | 要匹配的文档字段名,可用点路径访问嵌套字段。 |
|---|---|
| 值 | 要比较的数值、日期或字符串边界,不含边界本身。 |
返回值:匹配的文档游标
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $gt:查询年龄大于 21 的用户(21 不包含)
db.users.find({ age: { $gt: 21 } })
// 价格下限 + 日期范围
db.products.find({ price: { $gt: 100 } })
db.orders.find({ createdAt: { $gt: new Date('2026-09-01') } })
运行结果:
// 返回所有 age 大于 21 的用户;价格大于 100 的商品;9 月 1 日后的订单
📌 注意事项
- $gt 不含边界值,需包含边界时用 $gte
- 同一字段可组合 $gt 与 $lt 表达开区间,如 { price: { $gt: 10, $lt: 20 } }
- 数字与字符串不互相转换:$gt: 10 不会匹配字符串 '10'
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$gt 和 $gte 有什么区别?
A$gt 严格大于不含边界值;$gte 大于等于含边界值。查「超过 21 岁」用 $gt: 21,查「至少 21 岁」用 $gte: 21。
Q$gt 能查字符串或日期吗?
A能。字符串按字典序比较;日期需用 new Date() 包装后按时间比较,直接写字符串日期会退化为字典序比较。
Q价格大于 10 且小于 20 怎么写?
A写在同一字段的复合条件:{ price: { $gt: 10, $lt: 20 } },表达开区间。