Mongoose:MongoDB 数据库 Node.js ORM 基础操作

Mongoose 是一个 Node.js 的 ORM(对象关系映射)库,用于操作 MongoDB 数据库。它提供了高效的查询构建、模型定义、生命周期钩子等功能,同时也兼容各种 Node.js 框架,如 Express、Koa 等。本文将介绍 Mongoose 的基础操作,包括连接、模型定义、查询、更新、删除等。

连接 MongoDB 数据库

在使用 Mongoose 之前,需要先连接 MongoDB 数据库。我们可以使用 mongoose.connect() 方法进行连接,同时还可以设置一些连接选项,如:

其中,mongodb://localhost/myDB 表示连接本地的 myDB 数据库。其他参数的含义如下:

  • useNewUrlParser: 使用新的 URL 解析器,避免出现 URL 解析错误。
  • useUnifiedTopology: 使用新的连接管理引擎,避免出现奇怪的连接错误。
  • useCreateIndex: 在定义模型时自动创建索引,避免手动创建索引时出错。
  • useFindAndModify: 使用新的查找和修改引擎,避免出现过去版本的问题。

定义模型

在 Mongoose 中,模型是指与数据库中的集合(collection)相对应的构造函数。我们可以使用 mongoose.Schema 方法定义集合的 Schema(结构),再使用 mongoose.model 方法将 Schema 转换为模型,如:

其中,userSchema 定义了集合的结构,包括用户名、邮箱、密码、创建时间和更新时间等字段。User 是将 userSchema 转换为模型后的构造函数,即与集合相对应的模型。

查询操作

Mongoose 提供了丰富的查询操作,包括条件查询、投影查询、排序查询、分页查询、聚合查询等。下面分别介绍这些操作。

条件查询

条件查询是指根据指定的条件对集合进行查询,常用的条件操作符包括 $eq$ne$gt$lt$gte$lte$in$nin$or$and$not 等。举个例子:

其中,findOne() 方法用来查询满足条件的第一个文档,返回一个 Promise 或者执行回调函数,取决于是否传入回调函数。如果查询失败,将返回 err 错误。

投影查询

投影查询是指根据指定的字段对集合进行查询,可以使用 select() 方法指定需要查询的字段,也可以使用 exclude() 方法指定需要排除的字段。举个例子:

其中,select() 方法指定需要查询的字段,用空格分隔多个字段名;exclude() 方法指定需要排除的字段,也用空格分隔多个字段名。

排序查询

排序查询是指根据指定的字段对集合进行排序,可以使用 sort() 方法指定排序条件,如:

其中,sort() 方法用来指定排序条件,如果要进行降序排序,可以在字段名前面加上 - 符号。

分页查询

分页查询是指对集合进行分页查询,可以使用 skip() 方法跳过指定数量的文档,再使用 limit() 方法限制查询结果的数量,如:

其中,skip() 方法用来跳过指定数量的文档,limit() 方法用来限制查询结果的数量。

聚合查询

聚合查询是指对集合进行复杂的计算和处理,可以使用 aggregate() 方法实现,支持各种聚合操作符,如 $group$sort$project$match$lookup 等。举个例子:

其中,$lookup 是用来关联集合的操作符,用来将 users 集合关联到 comments 集合上;$project 是用来投影字段的操作符,用来计算每个用户的评论总数;$sort 是用来排序的操作符,用来按照评论总数降序排列。

更新操作

更新操作是指对集合中的文档进行更新,可以使用 updateOne()updateMany()findOneAndUpdate()findByIdAndUpdate() 等方法进行更新。举个例子:

其中,updateOne() 方法用来更新满足条件的第一个文档,updateMany() 方法用来更新满足条件的所有文档,findOneAndUpdate() 方法用来查询并更新满足条件的第一个文档,findByIdAndUpdate() 方法用来根据 ID 查询并更新对应的文档。

删除操作

删除操作是指对集合中的文档进行删除,可以使用 deleteOne()deleteMany()findOneAndDelete()findByIdAndDelete() 等方法进行删除。举个例子:

其中,deleteOne() 方法用来删除满足条件的第一个文档,deleteMany() 方法用来删除满足条件的所有文档,findOneAndDelete() 方法用来查询并删除满足条件的第一个文档,findByIdAndDelete() 方法用来根据 ID 查询并删除对应的文档。

总结

本文介绍了 Mongoose 的基础操作,包括连接、模型定义、查询、更新、删除等。Mongoose 提供了丰富的查询操作,支持条件查询、投影查询、排序查询、分页查询、聚合查询等,可以满足各种复杂的需求。同时,Mongoose 还提供了简单易用的更新和删除方法,方便开发者对数据进行操作。对于 MongoDB 数据库的使用者来说,掌握 Mongoose 的基础操作是非常必要的。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6534a6c07d4982a6eb99de63


纠错
反馈