MongoDB 是一个基于文档的 NoSQL 数据库,它支持丰富的查询操作。在 MongoDB 中,你可以使用各种查询操作符和操作来执行复杂查询。以下是一些常见的复杂查询方法:
-
比较查询操作符:用于比较字段值。
$eq
:等于$ne
:不等于$gt
:大于$gte
:大于等于$lt
:小于$lte
:小于等于
-
逻辑查询操作符:用于组合多个查询条件。
$and
:与(所有条件都必须满足)$or
:或(任意一个条件满足即可)$not
:非(不满足条件)
-
字段模式匹配:用于匹配字段值的特定模式。
$regex
:正则表达式匹配$options
:正则表达式选项(如i
表示忽略大小写)
-
范围查询:用于查询某个字段的指定范围内的值。
$gte
和$lte
:范围查询$in
:包含某个值列表$nin
:不包含某个值列表
-
文档结构查询:用于查询嵌套文档的字段值。
$elemMatch
:匹配数组中的元素$exists
:检查字段是否存在$type
:检查字段类型
-
聚合查询:用于对数据进行分组、排序、计算等操作。
$group
:按指定字段分组$sort
:对结果进行排序$project
:选择或排除字段$unwind
:将数组字段拆分为多个文档$limit
:限制查询结果数量$skip
:跳过指定数量的文档$match
:过滤聚合结果$addFields
:添加新字段$replaceRoot
:替换文档根节点
以下是一个复杂的查询示例,用于查找年龄大于 18 岁且名字包含 “John” 的用户,并按年龄降序排列:
db.users.find({ $and: [ { age: { $gt: 18 } }, { name: { $regex: "John", $options: "i" } } ] }).sort({ age: -1 })
这个查询使用了 $and
操作符来组合两个条件,$regex
来进行正则表达式匹配,以及 sort()
方法来对结果进行排序。你可以根据需要组合这些操作符来执行更复杂的查询。