首页/数据/NoSQL 速查/$expr 比较同文档两字段
MongoDB99 条

$expr 比较同文档两字段

在查询里引用字段值做计算或跨字段比较:$expr 使用聚合表达式语法,适合“同文档字段互比”的场景。

NoSQL 速查数据更新于 2026-10-12
语法{ $expr: { <聚合表达式> } }
字段引用"$field" 形式
常见用途库存与阈值比较、金额核对

示例

示例
db.budgets.find({ $expr: { $gt: ["$spent", "$budget"] } })
db.products.find({ $expr: { $lte: ["$stock", "$safetyStock"] } })
$expr 一般无法借助普通索引选择,大集合上代价高,能改写成固定值时优先改写。

易错点

  • 字段引用漏写 $ 前缀会变成与字面字符串比较,条件恒假且不易察觉

数据来源与参考

  • MongoDB Manual: $expr
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌