Mongoose 查询 API
Mongoose 是一个工具,允许您在 MongoDB 集合中定义和处理文档。Mongoose 最重要的一个方面是其 查询 API ,提供了一组方法用于构建和执行 MongoDB 数据库中的查询。在本文中,我们将看看 Mongoose 中一些常见的查询 API 方法以及如何在您的应用程序中使用它们。
Mongoose 查询 API 概述
Mongoose 在其模型上提供一些静态方法,用于在集合中执行 CRUD(创建、读取、更新、删除)操作。这些方法返回一个查询对象,可用于指定其他约束条件或执行查询。
- Model.deleteMany() : 从数据库中删除与指定条件匹配的多个文档。
- Model.deleteOne() : 从数据库中删除与指定条件匹配的单个文档。
- Model.find() : 从数据库中检索与指定条件匹配的一个或多个文档。
- Model.findById() : 根据其唯一的 _id 字段检索单个文档。
- Model.findByIdAndDelete() : 根据其 _id 字段找到并从数据库中删除单个文档。
- Model.findByIdAndRemove() : 根据其 _id 字段找到并从数据库中删除单个文档。
- Model.findByIdAndUpdate(): 根据其 _id 字段找到并更新数据库中的单个文档。
- Model.findOne() : 检索与指定条件匹配的单个文档。
- Model.findOneAndDelete() : 找到与指定条件匹配的单个文档并从数据库中删除它。
- Model.findOneAndRemove() : 找到与指定条件匹配的单个文档并从数据库中删除它。
- Model.findOneAndReplace() : 找到与指定条件匹配的单个文档,并使用新文档替换它。
- Model.findOneAndUpdate() : 找到与指定条件匹配的单个文档并更新它在数据库中。
- Model.replaceOne() : 使用新文档替换数据库中与指定条件匹配的单个文档。
- Model.updateMany() : 更新数据库中与指定条件匹配的多个文档。
- Model.updateOne() : 更新数据库中与指定条件匹配的单个文档。
前提条件:
- 必须安装MongoDB。
- 必须安装NodeJs。
在我们的应用程序中连接到MongoDB数据库: 在我们继续教程之前,让我们首先将MongoDB连接到我们的应用程序并创建模式。然后可以使用创建方法向文档中添加元素。
如何执行Mongoose查询API
由于其灵活性,我们可以以多种方式执行查询API:
1.使用回调函数: 在这种方法中,将回调函数传递给查询函数。当查询获取完成时,将执行此回调函数。
语法:
示例:
输出:
2. 使用.then()和.catch():
语法:
示例:
输出:
3. 使用 async await 语法:
语法:
示例:
输出:
Mongoose查询与Promises不同:
Mongoose查询并不是promise。然而,它们有一个.then()函数,可以用来将查询结果处理为一个promise。
以下是使用Mongoose查询和.then()函数的示例:
.then() 函数在查询完成时被调用,并将查询的结果作为参数传递。如果查询成功,结果将是找到的文档。如果查询失败,结果将为null。
Mongoose 查询与原生 JavaScript promises 有一些不同:
- Mongoose 查询在创建时不会立即执行。您需要调用像 .exec() 或 .then() 这样的方法来执行查询。
- Mongoose 查询具有许多其他方法,例如 .sort() 和 .limit(),可链接到查询以指定其他约束条件。
- Mongoose 查询设计用于与 MongoDB 一起使用,而原生 JavaScript promises 则更为通用。
在查询对象上进行排序、选择和限制操作:
sort() 函数允许您指定查询结果应按照哪个顺序返回。您可以使用逗号分隔的字段列表来指定排序顺序,其中 1 表示升序,-1 表示降序。例如:
limit()函数允许您指定查询应返回的最大结果数。 例如:
select()函数允许您指定查询结果中应包含哪些字段。您可以使用此函数来排除某些字段或仅包含特定字段。例如:
这些函数可以链接在一起以创建更复杂的查询。例如:
输出:
参考: https://mongoosejs.com/docs/queries.html