MongoDB 条件操作符
MongoDB 提供了丰富的条件操作符,用于在查询文档时指定复杂的查询条件。这些操作符允许我们执行比简单的相等匹配更高级的查询操作。
比较操作符
1. 大于操作符 ($gt)
javascript
// 查询 age 字段大于 30 的文档
db.users.find({ age: { $gt: 30 } })2. 大于或等于操作符 ($gte)
javascript
// 查询 age 字段大于或等于 30 的文档
db.users.find({ age: { $gte: 30 } })3. 小于操作符 ($lt)
javascript
// 查询 age 字段小于 30 的文档
db.users.find({ age: { $lt: 30 } })4. 小于或等于操作符 ($lte)
javascript
// 查询 age 字段小于或等于 30 的文档
db.users.find({ age: { $lte: 30 } })5. 不等于操作符 ($ne)
javascript
// 查询 status 字段不等于 "inactive" 的文档
db.users.find({ status: { $ne: "inactive" } })逻辑操作符
1. AND 操作符 ($and)
javascript
// 查询 age 大于 30 且 status 等于 "active" 的文档
db.users.find({
$and: [
{ age: { $gt: 30 } },
{ status: "active" }
]
})2. OR 操作符 ($or)
javascript
// 查询 age 大于 30 或 status 等于 "active" 的文档
db.users.find({
$or: [
{ age: { $gt: 30 } },
{ status: "active" }
]
})3. NOR 操作符 ($nor)
javascript
// 查询 age 不大于 30 且 status 不等于 "active" 的文档
db.users.find({
$nor: [
{ age: { $gt: 30 } },
{ status: "active" }
]
})数组操作符
1. 包含操作符 ($in)
javascript
// 查询 status 字段包含在 ["active", "pending"] 数组中的文档
db.users.find({ status: { $in: ["active", "pending"] } })2. 不包含操作符 ($nin)
javascript
// 查询 status 字段不包含在 ["inactive", "deleted"] 数组中的文档
db.users.find({ status: { $nin: ["inactive", "deleted"] } })3. 数组长度操作符 ($size)
javascript
// 查询 tags 数组长度为 3 的文档
db.users.find({ tags: { $size: 3 } })元素操作符
1. 存在操作符 ($exists)
javascript
// 查询包含 email 字段的文档
db.users.find({ email: { $exists: true } })2. 类型操作符 ($type)
javascript
// 查询 age 字段类型为 Number 的文档
db.users.find({ age: { $type: "number" } })正则表达式操作符
javascript
// 查询 name 字段以 "J" 开头的文档
db.users.find({ name: { $regex: /^J/ } })
// 查询 name 字段包含 "john" 的文档(不区分大小写)
db.users.find({ name: { $regex: /john/i } })其他常用操作符
1. 条件操作符 ($where)
javascript
// 使用 JavaScript 表达式查询
db.users.find({
$where: function() {
return this.age > 30 && this.status === "active";
}
})2. 评估操作符 ($expr)
javascript
// 使用聚合表达式查询
db.users.find({
$expr: {
$gt: ["$age", "$minAge"]
}
})操作符优先级
MongoDB 查询操作符具有不同的优先级,以下是一些常见操作符的优先级顺序(从高到低):
$expr,$jsonSchema,$mod,$regex,$text,$where$geoIntersects,$geoWithin,$near,$nearSphere$all,$elemMatch,$eq,$gt,$gte,$in,$lt,$lte,$ne,$nin,$not$and$or,$nor
总结
MongoDB 提供了丰富的查询操作符,允许我们创建复杂的查询条件。了解这些操作符的使用方法对于高效地查询和分析数据至关重要。在实际开发中,我们可以根据需要组合使用这些操作符,以满足各种查询需求。