Node.js 中如何使用 Mongoose 操作 MongoDB 数据库

相信大家在学习 Node.js 的过程中多少都听说过 MongoDB,这是一个具有高度扩展性和可伸缩性的文档型 NoSQL 数据库。而 Node.js 在处理 MongoDB 数据库方面的表现也非常的出色,其中 Mongoose 可以说是最为流行的连接器之一。本文将会介绍如何在 Node.js 中使用 Mongoose 来操作 MongoDB 数据库。

什么是 Mongoose

Mongoose 是一个为 Node.js 设计的 MongoDB 对象模型工具。 它提供了一种基于模式的方法,可以定义模型,这些模型可以被映射到 MongoDB 集合。Mongoose 还提供了很多内置的中间件,以便在执行某些操作时添加额外的逻辑。它还提供了让您更轻松地将 MongoDB 与 Node.js 集成的方法,以便可以轻松地处理数据存储或获取。

安装 Mongoose

Mongoose 是一款非常流行的库,并且非常适合使用npm进行安装。

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

连接 MongoDB 数据库

首先,我们需要连接到 MongoDB 数据库从而开始使用 Mongoose。你需要在你的应用程序中创建一个连接器,此连接器将会使用MongoDB://localhost/myDatabase会尝试连接到本地数据库。

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

我们通过mongoose模块的connect()方法连接上了带有myDatabase名称的本地 MongoDB 数据库。其中,useNewUrlParser:trueuseUnifiedTopology:true参数确保我们可以在新版本的 MongoDB 节点上使用所有新的服务器发现和监视引擎。

定义模式与模型

Mongoose 建立在模式和模型上。模式表示文档的结构,指定集合中模型的字段,属性和默认值等。模型则表示集合本身,允许您对集合上的文档执行操作。现在,我们将定义一个 person.js 模块,该模块将包含 Person 模型的名称和模式。

-- ---------

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

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

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

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

在 MongoDB 中插入数据

现在我们来插入一个人的实例到一个名为 people 的集合中:

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

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

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

在这个例子中,我们创建了一个 Person 实例,并将其保存到 MongoDB 集合。在保存了一个人的实例后,我们关闭了连接。 记住,由于 Node.js 的异步特性,保存完成后才能断开与 MongoDB 的连接。因此,我们将断开的语句放在回调函数中。

在 MongoDB 中查找数据

对于查找 MongoDB 中存储的文档,Mongoose 提供了一种非常简单的方法,就是使用find()方法查询:

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

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

在此示例中,我们使用了一个空对象作为查询参数,这意味着将查询所有的文档。如果处理程序成功,则打印出我们找到的所有文档,然后我们关闭数据库连接。我们可以按字段来查询数据:

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

或按某个特定字段排序:

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

在 MongoDB 中更新数据

要更新 MongoDB 的文档,可以使用 updateOne()updateMany() 方法。

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

在此示例中,我们将利用 _id 来更新给定的文档,将它的年龄改为 35

在 MongoDB 中删除数据

同样,Mongoose 为我们提供了删除文档的两个方法 deleteOne()deleteMany()。下面我们看一个具体的例子,在该例子中,我们将从数据库中删除 age 大于等于20,小于等于30的数据。

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

$gte 表示 “大于等于”,$lte 表示 “小于等于”。

总结

在以上内容的帮助下, 我们可以在 Node.js 应用中使用 Mongoose 来操作 MongoDB 数据库。从定义模式到添加或删除数据,我们学习了一些常见的操作方法。当然,Mongoose 还有更多的用法,如中间件和其他高级功能, 可以根据自己的需要去寻找。在实践中,希望读者可以探索和尝试来更好地了解和使用 Mongoose 和 MongoDB。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64ac71b048841e989486ed05


猜你喜欢

  • 使用 ES12 中的 BigInt64Array 和 BigUint64Array 处理大整数

    在传统的 JavaScript 中,处理大整数的能力受到了限制。当数字超出了 JavaScript 的 Number 类型的最大值时,我们就需要借助一些工具或外部库来进行处理。

    1 年前
  • 使用 Mongoose 分页:优化网络传输效率

    随着互联网的快速发展,前端开发的需求也越来越高。而对于开发中的数据传输效率问题,Mongoose 分页是一种可以优化传输效率的解决方案。 Mongoose 分页介绍 Mongoose 是 Node.j...

    1 年前
  • ECMAScript 2015:如何降低 JavaScript 闭包的绑定

    JavaScript 的闭包是一种非常有用的功能,它可以让函数捕获作用域中的变量,这些变量在函数被调用后仍然可以被访问。然而,如果不小心使用闭包,它们可能会导致内存泄漏和性能问题。

    1 年前
  • Angular6 项目使用 Sass

    Sass (Syntactically Awesome Style Sheets) 是一种 CSS 预处理器,它可以帮助前端开发人员编写更加高效、简洁和易于维护的样式表。

    1 年前
  • Redux异步流操作方案

    前言 Redux是一种可预测的状态管理模式,被广泛应用于React应用程序的开发中。但是,Redux仅定义同步数据流,而异步流操作在实际应用中也非常常见。那么,如何在Redux中处理异步流操作呢?接下...

    1 年前
  • 在 Webpack 中使用 ESLint 检查代码错误

    前言 如果你是一名前端工程师,就一定知道代码的品质有多么重要。每一行代码都可能会影响运行性能、稳定性和安全性等多种因素。而对于复杂的项目,代码的品质掌控更加困难。这就需要一些辅助工具来帮助我们维护代码...

    1 年前
  • 如何使用 Koa2 实现多语言支持

    在前端开发中,多语言支持是一个非常常见的需求。在 Koa2 框架下,我们可以使用 koa-i18n 中间件来实现多语言支持。本文将详细介绍如何在 Koa2 中使用 koa-i18n 实现多语言支持。

    1 年前
  • React 单元测试:使用 Enzyme 测试组件

    在现代的 Web 开发中,前端框架被广泛使用,其中 React 是最受欢迎的之一。然而,使用 React 进行开发和测试需要不同的技能和工具。单元测试是确保您的应用程序正确工作的重要步骤之一,同时可以...

    1 年前
  • Headless CMS 在区块链应用中的应用实践

    在区块链应用中,后端数据尤为重要,而 Headless CMS 的应用能够更好地满足区块链应用的数据存储和管理需求。本文将从 Headless CMS 的概念、在区块链应用中的应用场景入手,探讨 He...

    1 年前
  • Vue.js 中使用 computed 和 watch 的区别及应用

    在 Vue.js 中,computed 和 watch 是两个常用的属性,用于响应式地处理数据。显然它们的作用是不同的,但往往会被新手混淆或误用。本文将详细介绍它们的区别及应用。

    1 年前
  • Performance Optimization:如何减少你的应用程序的内存使用

    Performance Optimization:如何减少你的应用程序的内存使用 在前端开发中,优化应用程序的内存使用显得尤为重要,特别是当应用程序需要处理大量数据或需要长时间运行时。

    1 年前
  • Web Components 实现动态生成数据图表的方法

    引言 随着现代应用程序经常需要在前端实现复杂的图表和数据可视化, Web Components 成为一个强大的工具,可以让开发人员轻松地创建可重用和自定义的 UI 组件。

    1 年前
  • Redis 使用教程:如何监控 Redis 运行状况

    Redis 是一款高性能的、开源的、基于内存的 key-value 存储数据库,被广泛应用于分布式缓存、消息队列、时间序列数据存储等场景中。由于其高速、灵活的特性,越来越多的公司和团队选择使用 Red...

    1 年前
  • 如何使用 Vue.js 与 RESTful API 构建前端应用

    Vue.js 是一个渐进式 JavaScript 框架,可以帮助我们构建交互式的前端应用。而 RESTful API 则是一种常见的 Web API 接口设计风格,可以帮助我们在前端与后端之间传递数据...

    1 年前
  • CSS Flexbox 中基于属性设置具体数值的方法和技巧

    CSS Flexbox 是一种强大的布局方式,可以让开发者轻松地实现各种复杂的页面布局。然而,当涉及到基于属性设置具体数值时,很多开发者可能会遇到一些困惑。本文将详细介绍 CSS Flexbox 中基...

    1 年前
  • 在 Webpack 中使用 DllPlugin 插件优化打包速度

    Webpack 是前端项目极为流行的打包工具之一,它的强大功能和灵活性让许多开发者深受喜爱。然而,Webpack 的打包速度对于项目越来越大的情况来说,却是一个非常大的问题。

    1 年前
  • Material Design 实现 Toolbar 和 App Bar 动画效果方法

    Material Design 是 Google 推出的一种设计语言,在移动应用和 web 应用开发中都被广泛应用。其中最为常见的两个元素就是 Toolbar 和 App Bar,它们被广泛应用于 A...

    1 年前
  • CSS3 过渡动画实现响应式设计

    当今,响应式设计已经成为任何一个现代网站的重要组成部分。随着越来越多的用户从 PC 转向移动端浏览网页,更好的用户体验已经变得越来越重要。而 CSS3 过渡动画正是实现这个目标所必需的一个重要技术。

    1 年前
  • SSE 与 AngularJS 进行的服务器端推送实践

    在传统 Web 应用中,客户端需要不停地向服务器发送请求来获取最新数据。这种轮询机制无疑会造成服务器压力的浪费,并且实时展现数据的能力也难以实现。因此,服务器端推送技术应运而生。

    1 年前
  • 使用 React 和 Firebase 创建实时应用

    在现代的 web 开发中,实时应用已经成为了不可缺少的一部分。实时应用包括聊天应用、数据监控应用等,这些应用都需要实时更新数据以提供更好的用户体验。在这篇文章中,我们将介绍如何使用 React 和 F...

    1 年前

相关推荐

    暂无文章