$ne(不等于)
最后更新:2026-10-09
$ne(不等于)
$ne 选择字段值不等于指定值的文档,是 $eq 的否定形式。`{ age: { $ne: 18 } }` 匹配 age 不是 18 的所有文档。注意:与 $eq 一样对类型敏感,且**不匹配字段缺失的文档**——这与直觉相反。
| 分类 | 比较 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ <字段>: { $ne: <值> } }
⚙️ 参数
| 字段 | 要匹配的文档字段名。 |
|---|---|
| 值 | 要排除的值。 |
返回值:匹配的文档游标
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $ne:排除 age 为 18 的文档
db.users.find({ age: { $ne: 18 } })
运行结果:
// 返回所有 age 不是 18 的文档(字段缺失者不返回)
📌 注意事项
- 不匹配字段缺失的文档:若想包含缺失字段,需加 { $exists: true }
- 对数组:$ne 只要任意元素不等于给定值即匹配
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$ne 会匹配字段不存在的文档吗?
A不会。$ne 只匹配字段存在且值不等于给定值的文档。若要包含缺失字段,需额外加 $exists: true。
Q$ne 和 $not: { $eq: ... } 有区别吗?
A对普通字段两者结果相同。区别在数组字段:$ne 匹配任一元素不等于该值,而 $not: { $eq } 要求没有任何元素等于该值,语义更严格。
Q$ne 能匹配 null 吗?
A能。$ne: null 会排除值为 null 的文档,但注意字段缺失的文档会被视为不等于 null 而匹配,需要时配合 $exists 限定。