使用 Mongoose 在 Node.js 中实现 MongoDB 数据库的 CURD 操作

阅读时长 11 分钟读完

前言

MongoDB 是一种非关系型数据库,它采用文档存储结构,适合存储大量非结构化数据,比如 Web 应用程序中的数据。而 Node.js 作为 JavaScript 运行的环境,有着快速高效的特点,适合用于搭建 Web 服务器,因此,在 Node.js 应用程序中操作 MongoDB 数据库是一种非常常见的应用场景。而 Mongoose 则是一个非常好用的 MongoDB 操作库,提供了更简单、更直观的 API,大幅降低了操作 MongoDB 的难度。

本文将介绍如何在 Node.js 应用程序中使用 Mongoose 操作 MongoDB 数据库的 CURD 操作,并会提供示例代码。

CURD 操作

在数据库操作中,CURD 即 Create(创建)、Update(更新)、Read(读取)、Delete(删除)。

  • Create(创建): 插入数据到指定的集合
  • Update(更新): 更新集合中的数据
  • Read(读取): 读取集合中的数据
  • Delete(删除): 删除集合中的指定数据

安装 Mongoose

在 Node.js 应用程序中使用 Mongoose 操作 MongoDB 数据库,需要首先安装 Mongoose。使用 npm 命令行工具安装,命令如下:

连接 MongoDB

在使用 Mongoose 操作 MongoDB 数据库前,需要首先连接 MongoDB 数据库。连接操作需要在 Node.js 应用程序的启动文件中进行配置。

-- -------------------- ---- -------
----- -------- - --------------------

-------------------------------------------- - ---------------- ---- ---
----- -- - --------------------

-------------- ----- -- -
  ----------------------- ---------- ------ -----------------
---
--------------- -- -- -
  ---------------------- --------- ----------------
---

在上述示例中,通过 mongoose.connect 方法连接 MongoDB 数据库。其中,第一个参数是 MongoDB 数据库的地址(mongodb://localhost/test),第二个参数是一个配置对象, 目前指定了 useNewUrlParser: true,这个配置项是为了避免 Node.js 应用程序连接 MongoDB 时出现警告。如果省略这个配置项,可能会在应用程序启动时看到如下警告:DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

连接成功后,会触发 db.once('open') 事件,表示 MongoDB 数据库已经连接成功。

定义数据模型 Schema

在使用 Mongoose 操作 MongoDB 数据库时,需要首先定义数据模型 Schema。Schema 是用来定义数据的结构、类型、验证等信息,直接映射到 MongoDB 集合(collection)上。

-- -------------------- ---- -------
----- -------- - --------------------
----- ------ - ----------------

-- ------ ------
----- ---- - --- --------
  ----- -------
  ---- -------
  ------ -------
---

-- ----- ------ --- ------- -- ------- -----
-------------- - ---------------------- ------

在上述示例中,我们通过 Mongoose 的 Schema 方法定义了一个用户数据模型 Schema,并定义了三个数据字段分别为 nameageemail

mongoose.model('User', User) 方法定义了一个名为 User 的数据模型,并将其映射到 MongoDB 集合 users 上。这里的 User 字符串对应于集合名称,而 User 作为第二个参数对应于之前定义的数据模型 Schema。

Create(创建)操作

在 Mongoose 中进行 Create(创建)操作很简单,只需要使用数据模型的 create 方法。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------
-------------
  ----- ------
  ---- ---
  ------ ------------------
-- ----- -- -
  -- ----- -
    --------------------- ---- ------- -----------------
  - ---- -
    -------------------- ---- -----------
  -
---

在上述示例中,我们通过 User.create 方法新增了一个名为 Tom 的用户。

Read(读取)操作

在 Mongoose 中进行 Read(读取)操作有两种方式,一种是使用数据模型的 find 方法,一种是使用数据模型的 findOne 方法。

find 方法

使用 find 方法可以查询出一个集合中所有符合条件的文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------
--------------- ------ -- -
  -- ----- -
    ------------------- ----- ------- -----------------
  - ---- -
    ------------------ --------------- ---------
    --------------------
  -
---

在上述示例中,我们通过 User.find 方法查询了集合中的所有用户,并在查询完成后输出了所有用户的信息。

findOne 方法

使用 findOne 方法可以查询出一个集合中符合条件的第一个文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- -------
-------------- ----- ----- -- ----- ----- -- -
  -- ----- -
    ------------------- ---- ------- -----------------
  - ---- -
    ------------------ ---- -----------
    -------------------
  -
---

在上述示例中,我们通过 User.findOne 方法查询了集合中名为 Tom 的第一个用户,并在查询完成后输出了该用户的信息。

Update(更新)操作

在 Mongoose 中进行 Update(更新)操作很简单,只需要使用数据模型的 updateOneupdateManyfindOneAndUpdate 方法。

updateOne 方法

使用 updateOne 方法可以更新集合中符合条件的第一个文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------- --- -----
---------------- ----- ----- -- - ---- -- -- ----- -- -
  -- ----- -
    --------------------- ---- ------- -----------------
  - ---- -
    -------------------- ---- -----------
  -
---

在上述示例中,我们通过 User.updateOne 方法更新集合中名为 Tom 的第一个用户的年龄为 26。

updateMany 方法

使用 updateMany 方法可以更新集合中符合条件的所有文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------ --- -----
----------------- ----- ----- -- - ---- -- -- ----- -- -
  -- ----- -
    --------------------- ----- ------- -----------------
  - ---- -
    -------------------- ----- -----------
  -
---

在上述示例中,我们通过 User.updateMany 方法更新集合中名为 Tom 的所有用户的年龄为 27。

findOneAndUpdate 方法

使用 findOneAndUpdate 方法可以更新集合中符合条件的第一个文档,并返回更新前的文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------- --- --------------
----------------------- ----- ----- -- - ---- -- -- - ---- ---- -- ----- ----- -- -
  -- ----- -
    --------------------- ---- ------- -----------------
  - ---- -
    -------------------- ---- ------- --- --- --- --------
    -------------------
  -
---

在上述示例中,我们通过 User.findOneAndUpdate 方法更新集合中名为 Tom 的第一个用户的年龄为 28,并返回更新前的用户信息。

Delete(删除)操作

在 Mongoose 中进行 Delete(删除)操作很简单,只需要使用数据模型的 deleteOnedeleteManyfindOneAndDelete 方法。

deleteOne 方法

使用 deleteOne 方法可以删除集合中符合条件的第一个文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------- --- ---
---------------- ----- ----- -- ----- -- -
  -- ----- -
    --------------------- ---- ------- -----------------
  - ---- -
    -------------------- ---- -----------
  -
---

在上述示例中,我们通过 User.deleteOne 方法删除集合中名为 Tom 的第一个用户。

deleteMany 方法

使用 deleteMany 方法可以删除集合中符合条件的所有文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------ --- ---
----------------- ----- ----- -- ----- -- -
  -- ----- -
    --------------------- ----- ------- -----------------
  - ---- -
    -------------------- ----- -----------
  -
---

在上述示例中,我们通过 User.deleteMany 方法删除集合中名为 Tom 的所有用户。

findOneAndDelete 方法

使用 findOneAndDelete 方法可以删除集合中符合条件的第一个文档,并返回删除前的文档。

-- -------------------- ---- -------
----- ---- - ------------------

-- ------- --- -------------
----------------------- ----- ----- -- ----- ----- -- -
  -- ----- -
    --------------------- ---- ------- -----------------
  - ---- -
    -------------------- ---- ------- --- --- --- --------
    -------------------
  -
---

在上述示例中,我们通过 User.findOneAndDelete 方法删除集合中名为 Tom 的第一个用户,并返回删除前的用户信息。

总结

通过以上示例代码,我们可以看到,在 Node.js 应用程序中使用 Mongoose 操作 MongoDB 数据库实现 CURD 操作非常简单。感兴趣的读者可以尝试在自己的应用程序中使用 Mongoose 操作 MongoDB 数据库。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c5fa9995c405902ee4686a

纠错
反馈