$eq(相等)
最后更新:2026-10-09
$eq(相等)
$eq是表达式版的相等比较,接受两个参数,返回布尔值。它用在$project、$match的$expr中等表达式上下文,与查询操作符的用法不同:查询里写{ field: { $eq: value } },表达式里写{ $eq: [expr1, expr2] }。常用于字段间比较、与$cond配合做条件判断。比较遵循BSON类型顺序,null与null比较返回true。
| 分类 | 集合·条件·转换 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $eq: [ <表达式1>, <表达式2> ] }
⚙️ 参数
| 表达式1 | 参与比较的第一个表达式。 |
|---|---|
| 表达式2 | 参与比较的第二个表达式。 |
返回值:两个值相等返回true,否则返回false
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $eq:判断是否免运费
db.orders.aggregate([
{ $project: {
freeShip: { $eq: ['$shipCost', 0] }
} }
])
运行结果:
{ '_id': 1, 'freeShip': true }
{ '_id': 2, 'freeShip': false }
📌 注意事项
- 表达式上下文写数组形式,查询上下文是字段加值
- null与null比较返回true
- 比较遵循BSON类型顺序
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$eq在表达式和查询里的写法有什么区别?
A查询写{ field: { $eq: value } },表达式写{ $eq: [expr1, expr2] }。
Q$eq对null怎么比较?
Anull与null相等返回true,与其他类型不相等。
Q$eq能比较数组吗?
A能,按元素逐项比较,顺序不同则不等。