## 4.1 MongoDB 查询措辞
MongoDB 供应了一种灵巧而强大的查询措辞,许可您检索和操作数据。查询措辞基于类似 JSON 的工具,使其易于利用。
### 演示 1:基本查询

1. 让我们从一个大略的查询开始,查找“employees”凑集中在“数据科学”部门事情的所有员工:
db.employees.find({ department: "Data Science" })
2. 此查询利用“find”方法来搜索与指定条件匹配的文档。
## 4.2 查询文档
MongoDB 支持多种查询技能。您可以根据特定条件搜索文档、比较值并实行逻辑运算。
### 演示 2:带条件查询
1、查询事情履历大于即是3年且非经理的员工:
db.employees.find({ experience: { $gte: 3 }, isManager: false })
2. MongoDB 利用 `$gte` 运算符来比较值,并利用 `$and` 运算符进行逻辑连接。
## 4.3 投影和字段选择
在 MongoDB 中,您可以掌握查询结果中返回哪些字段。这对付通过仅获取必要的数据来优化查询性能特殊有用。
### 演示 3:字段选择
1. 让我们查询“工程”部门的员工,但只返回他们的姓名和职位:
db.employees.find( { department: "Engineering" }, { name: 1, position: 1, _id: 0 })
2. `{ name: 1,position: 1, _id: 0 }`工具指定结果中只应包含`name`和`position`字段。
## 4.4 结果排序
您可以根据一个或多个字段对查询结果进行升序或降序排序。
### 演示 4:对查询结果进行排序
1. 让我们找到所有员工并按雇用日期降序对他们进行排序:
db.employees.find().sort({ hireDate: -1 })
2. `sort` 方法许可您指定字段和排序顺序(-1 为降序,1 为升序)。
## 4.5 聚合框架
MongoDB 的聚合框架供应了强大的数据转换和剖析功能。您可以实行繁芜的操作,例如分组、过滤和投影数据。
### 演示 5:利用聚合框架
1、我们来打算一下各个部门员工的均匀履历:
db.employees.aggregate([ { $group: { _id: "$department", avgExperience: { $avg: "$experience" } } }])
2. 该聚合管道包含一个“$group”阶段,用于按部门对员工进行分组并打算每个组内的均匀履历。
## 4.6 文本搜索
MongoDB 包括全文搜索功能,用于搜索文档中的文本数据。
### 演示 6:文本搜索
1. 假设您有一个文章凑集,并且想要搜索包含术语“MongoDB”的文章。
db.articles.find({ $text: { $search: "MongoDB" } })
2. 该查询利用 `$text` 运算符来实行全文搜索。
## 4.7 地理空间查询
MongoDB 支持地理空间查询来处理基于位置的数据。您可以根据地理坐标查询文档。
### 演示 7:地理空间查询
1. 查找特定位置5公里半径内的所有员工:
db.employees.find({ location: { $near: { $geometry: { type: "Point", coordinates: [longitude, latitude] }, $maxDistance: 5000 } } })
2. 将“[经度,纬度]”更换为目标位置的实际坐标。
## 4.8 利用韶光序列数据
MongoDB 非常适宜管理韶光序列数据,例如日志和事宜。您可以高效地查询和聚合时间序列数据。
### 演示 8:韶光序列查询
1. 我们来查询最近24小时内的所有日志条款:
const yesterday = new Date()yesterday.setDate(yesterday.getDate() - 1)db.logs.find({ timestamp: { $gte: yesterday } })
2. 此查询检索韶光戳大于或即是 24 小时前的日志条款。
在本章中,您学习了查询 MongoDB 的根本知识,从基本查询到更高等的技能,如字段选择、排序、聚合框架、文本搜索、地理空间查询和处理韶光序列数据。有效的查询对付从 MongoDB 数据中提取故意义的见地至关主要。在接下来的章节中,我们将在运用程序的背景下探索 MongoDB发展并深入研究更高等的主题。