MongoDB 条件操作符


描述

条件操作符用于比较两个表达式并从 mongoDB 集合中获取数据。

在本章节中,我们将讨论如何在 MongoDB 中使用条件操作符。

这些操作符可以分为以下几类:比较操作符、逻辑操作符、元素操作符、数组操作符、以及其他常用操作符。

比较操作符

比较操作符有:

操作符描述示例
$eq等于{ age: { $eq: 25 } }
$ne不等于{ age: { $ne: 25 } }
$gt大于{ age: { $gt: 25 } }
$gte大于等于{ age: { $gte: 25 } }
$lt小于{ age: { $lt: 25 } }
$lte小于等于{ age: { $lte: 25 } }
$in在指定的数组中{ age: { $in: [25, 30, 35] } }
$nin不在指定的数组中{ age: { $nin: [25, 30, 35] } }

查找年龄大于 25 且城市为 "New York" 的文档:

db.myCollection.find({ age: { $gt: 25 }, city: "New York" });

逻辑操作符

逻辑操作符有:

操作符描述示例
$and逻辑与,符合所有条件{ $and: [ { age: { $gt: 25 } }, { city: "New York" } ] }
$or逻辑或,符合任意条件{ $or: [ { age: { $lt: 25 } }, { city: "New York" } ] }
$not取反,不符合条件{ age: { $not: { $gt: 25 } } }
$nor逻辑与非,均不符合条件{ $nor: [ { age: { $gt: 25 } }, { city: "New York" } ] }

查找年龄大于 25 或城市为 "New York" 的文档:

db.myCollection.find({ $or: [ { age: { $gt: 25 } }, { city: "New York" } ] });

元素操作符

元素操作符有:

操作符描述示例
$exists字段是否存在{ age: { $exists: true } }
$type字段的 BSON 类型{ age: { $type: "int" } }

查找包含 age 字段的文档:

db.myCollection.find({ age: { $exists: true } });

数组操作符

数组操作符有:

操作符描述示例
$all数组包含所有指定的元素{ tags: { $all: ["red", "blue"] } }
$elemMatch数组中的元素匹配指定条件{ results: { $elemMatch: { score: { $gt: 80, $lt: 85 } } } }
$size数组的长度等于指定值{ tags: { $size: 3 } }

查找数组 tags 中包含 "red" 和 "blue" 的文档:

db.myCollection.find({ tags: { $all: ["red", "blue"] } });

其他操作符

还有一些其他操作符如下:

操作符描述示例
$regex匹配正则表达式{ name: { $regex: /^A/ } }
$text进行文本搜索{ $text: { $search: "coffee" } }
$where使用 JavaScript 表达式进行条件过滤{ $where: "this.age > 25" }

查找名字以 "A" 开头的文档:

db.myCollection.find({ name: { $regex: /^A/ } });

实例

查找年龄大于 25 且城市为 "New York",名字以 "A" 开头的文档:

实例

db.myCollection.find({
    $and: [
        { age: { $gt: 25 } },
        { city: "New York" },
        { name: { $regex: /^A/ } }
    ]
});