MongoDB数据库基础 之 mongodb条件查询和排序

1. MongoDB条件查询

1.1 定义

MongoDB是一种灵活的NoSQL数据库,它支持多种类型的查询。条件查询是指按照一定的条件对数据库中的文档进行查找并返回满足条件的文档。条件查询包括:匹配查询、范围查询、逻辑查询、正则表达式查询、复合查询等。

1.2 匹配查询

匹配查询是指按照指定的条件进行精确匹配查找,并返回满足条件的文档。匹配查询的操作符有 $eq (等于)、$ne (不等于)、$gt (大于)、$gte (大于等于)、$lt (小于)、$lte (小于等于)、$in (在指定的数组中)、$nin (不在指定的数组中)。

例如,查询“score”等于100的文档可以使用以下方式:

$eq: {score: 100}

除此之外,我们还可以使用 正则表达式 在 MongoDB 中进行模糊匹配查询。例如,查询“name”中包含字母 ‘a’ 的文档可以使用以下方式:

{ name: /a/ }

1.3 范围查询

范围查询是按照指定的范围查询并返回满足条件的文档。它的操作符有 $gt (大于)、$gte (大于等于)、$lt (小于)、$lte (小于等于)、$in (在指定的范围内)、$nin (不在指定的范围内)。

例如,查询“score”大于90小于等于100的文档可以使用以下方式:

{ score: { $gt: 90, $lte: 100 } }

1.4 逻辑查询

逻辑查询是根据指定的逻辑操作符对文档进行查询并返回满足条件的文档。逻辑操作符有 $and、$or、$not、$nor。

例如,查询“score”大于等于80并且年龄小于30的文档可以使用以下方式:

{ $and: [ { score: { $gte: 80 } }, { age: { $lt: 30 } } ] }

2. MongoDB条件排序

2.1 概述

在 MongoDB 中,可以根据指定的条件对搜索结果进行排序,也可以选择升序或降序。

2.2 升序和降序

MongoDB 中的排序采用 -1 表示降序,1 表示升序。例如,按照“name”字段进行升序排序,代码如下:

{ name: 1 }

如果要按照“name”字段进行降序排序,代码如下:

{ name: -1 }

2.3 多条件排序

在 MongoDB 中,可以按照多个条件对搜索结果进行排序。例如,按照“score”字段进行升序排序,并按照“age”字段进行降序排序,代码如下:

{ score: 1, age: -1 }

2.4 排序应用案例

假设我们有一个名为“students”的集合,其包含以下文档:

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a1"), "name" : "张三", "score" : 88, "age" : 20 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a2"), "name" : "李四", "score" : 95, "age" : 25 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a3"), "name" : "王五", "score" : 89, "age" : 22 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a4"), "name" : "赵六", "score" : 92, "age" : 21 }

我们可以通过以下代码将按照“score”字段进行升序排序:

db.students.find().sort({ score: 1 })

查询结果将按照“score”字段的值升序排列,具体查询结果如下:

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a1"), "name" : "张三", "score" : 88, "age" : 20 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a3"), "name" : "王五", "score" : 89, "age" : 22 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a4"), "name" : "赵六", "score" : 92, "age" : 21 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a2"), "name" : "李四", "score" : 95, "age" : 25 }

我们还可以通过以下代码将同时按照“score”字段进行升序排序和“age”字段进行降序排序:

db.students.find().sort({ score: 1, age: -1 })

查询结果将按照“score”字段的值升序排列,如果有多条记录“score”字段相等,则按照“age”字段的值降序排列,具体查询结果如下:

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a1"), "name" : "张三", "score" : 88, "age" : 20 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a3"), "name" : "王五", "score" : 89, "age" : 22 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a4"), "name" : "赵六", "score" : 92, "age" : 21 }

{ "_id" : ObjectId("5e42ffb70f4d141ac8a9e9a2"), "name" : "李四", "score" : 95, "age" : 25 }

3. 总结

MongoDB 是一种灵活的 NoSQL 数据库,通过条件查询可以轻松地查询符合条件的文档。MongoDB 中的排序操作可以帮助我们根据指定的条件对查询结果进行排序,同时支持多条件排序与升序/降序排序。以上内容仅为 MongoDB 的条件查询和排序的基础内容,实际应用中还有更多高级功能需要掌握。

数据库标签