Mongoose 中的存储引擎配置

在使用 Node.js 进行 web 开发时,常常会用到 Mongoose 来连接 MongoDB。在 Mongoose 中,存储引擎是一个非常重要的配置选项,因为不同的存储引擎会对数据的性能、安全性、可扩展性等方面产生重大影响。本文将介绍 Mongoose 中的存储引擎配置,为读者提供详细的指导和学习意义。

Mongoose 存储引擎的概述

在 Mongoose 中,存储引擎指的是底层数据库的存储引擎,MongoDB 提供了多种存储引擎如 WiredTiger、MMapv1 等,在 Mongoose 中,可以通过设置 mongoose.connect() 函数的第二个参数来配置存储引擎。具体示例如下:

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

在上面的示例中,我们设置了存储引擎为 WiredTiger,同时也设置了一些其他的选项,具体含义分别如下:

  • useNewUrlParser:使用新的 URL 解析器,必须设置为 true;
  • useUnifiedTopology:使用新的网格结构,必须设置为 true;
  • useCreateIndex:可以使用 Model.createIndex() 方法创建索引,而不需要显示调用 Model.ensureIndexes()
  • useFindAndModify:可以使用 findOneAndUpdate()findOneAndDelete() 替代 findAndModify()findAndModify() 已被废弃;
  • storageEngine:指定底层存储引擎的名称。

需要注意的是,不同的存储引擎可能需要设置不同的选项,详细的文档可以参考 Mongoose 的官方文档。

选择合适的存储引擎

在选择存储引擎时,应该根据实际应用场景进行选择,下面我们将针对不同的场景来介绍几种存储引擎的特性和适用性。

WiredTiger

WiredTiger 是 MongoDb 3.2 及以上版本引入的一种存储引擎,默认情况下也是 Mongoose 的默认存储引擎。WiredTiger 的主要特性如下:

  • 支持事务;
  • 支持更多的读写操作;
  • 更好的压缩比率;
  • 更好的缓存管理。

适用场景:事务型应用、读写比较均衡的应用、需要海量数据存储的应用。

MMapv1

MMapv1 是 MongoDb 的旧存储引擎,在 mongodb 4.4 及以上版本中被淘汰。MMapv1 的主要特性如下:

  • 适合小型应用,基于内存映射技术,可以更快地在内存中访问数据;
  • 不支持事务;
  • 随着数据量的增加,索引性能会下降。

适用场景:小型应用。

RocksDB

RocksDB 是一种 LSM 树存储引擎,其主要特性如下:

  • 高效的写入和读取性能;
  • 支持事务和快照;
  • 提供了压缩功能。

适用场景:高并发写入型应用、需要高效压缩的应用。

总结

Mongoose 中的存储引擎配置是一个非常关键的部分,本文从概述、选择适当的存储引擎等多个方面作了详细的介绍,读者可以根据自己的应用场景进行合理的配置选择。在使用存储引擎的过程中,还应注意对不同存储引擎的具体配置和使用规范的学习。

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


猜你喜欢

  • Express.js 如何使用 NPM 记录依赖项并指定版本

    在前端开发中,使用 Express.js 可以快速构建 Web 应用程序。而在 Express.js 中,需要使用各种 npm 模块来实现不同的功能。在使用这些模块的时候,我们通常需要记录下每个模块的...

    1 年前
  • ES9:异步迭代器概览

    ES9 引入了一项非常实用的新特性:异步迭代器。异步迭代器是一种能够异步地对数据集合进行迭代操作的对象。它类似于普通迭代器,但可以在处理每个元素时异步地执行某些操作。

    1 年前
  • Headless CMS 如何解决内容在前端的展示问题?

    在现代化的 Web 应用中,前端应用已经成为了用户与服务器之间最重要的交互界面。而为了让前端应用更易用、更可靠,在与后端服务器交互时,需要从服务器上拉去数据,并将其展示在用户界面上。

    1 年前
  • Next.js 集成 Graphql 的实现方法

    在如今的 Web 开发中,前后端分离的架构已经成为了一种趋势,前端框架也愈发强大,诸如 React、Next.js 等都成为了前端开发的重要工具。而GraphQL可以说是前后端交互的一个重要协议。

    1 年前
  • CSS Grid 如何让网页布局更有趣?

    当我们谈论网页设计时,布局是其中一个至关重要的部分。一个好的布局可以引导用户在网页上自然地浏览,同时增加网页的美感。在这篇文章中,我们将介绍 CSS Grid 这个强大的前端工具,它可以让网页布局更有...

    1 年前
  • 使用 PM2 部署 WebSocket 应用的步骤

    在使用 Node.js 进行 WebSocket 开发时,我们通常需要考虑应用的可靠性和稳定性问题。使用 PM2 来进行应用的部署和管理,不仅可以提升应用的可靠性和稳定性,还可以方便地进行应用的监控和...

    1 年前
  • 全面了解 CSS Grid 和 CSS Flexbox:让你更高效地进行布局

    在进行前端开发时,布局是一个不可避免的问题。随着浏览器技术的不断更新,CSS 中的布局也不断发展。现在,我们有两种主流的 CSS 布局方式:CSS Grid 和 CSS Flexbox。

    1 年前
  • Angular 中子组件如何调用父组件的方法

    随着前端技术的不断发展,前端框架也越来越多,Angular 作为一个主流的前端框架,被越来越多的开发者所使用。在 Angular 中,父组件与子组件之间的交互十分常见,而在子组件中调用父组件的方法也是...

    1 年前
  • 使用 Babel 7 i18n 转换籍翻译

    在现代的网站和 Web 应用程序中,多语言支持已成为必不可少的功能。随着用户群体的不断扩大和多元化,开发人员需要使用不同的语言来满足不同用户的需求。然而,在多语言应用程序中,本地化和翻译管理变得非常困...

    1 年前
  • Deno 的 WebSocket 服务器入门

    WebSocket 被广泛应用于实时数据传输,比如即时通讯、游戏、在线音视频等等。Deno 是一种新型的运行时平台,它提供了内置的 WebSocket 库,可以让我们更加方便地开发 WebSocket...

    1 年前
  • Promise 的小豆腐 ——ES7 增强处理

    前言 随着 Web 技术的不断发展,前端在功能和性能上都有了极大提升,其中 Promise 对于异步操作的处理使得前端开发不再受到诸如回调函数等问题的限制,这也得到了广大开发者的热捧。

    1 年前
  • Jest 框架开启 Mock 测试的正确姿势

    概述 在前端测试中,Mock 测试是一种非常重要的测试类型。Mock 测试的主要目标是针对某个系统组件进行单元测试,但是该组件所依赖的其他组件却被 Mock 掉,以消除对这些组件的依赖,从而实现快速测...

    1 年前
  • Web Components 中的状态管理

    随着 Web 技术的不断发展,前端开发也变得越来越复杂。在构建复杂前端应用时,往往需要有效的状态管理来保证应用的可维护性和灵活性。Web Components 是一项强大的技术,它可以让我们将应用组件...

    1 年前
  • ES12 中的 Promise.any() 在文件上传中的使用场景

    前言 ES12 中新增了一个全新的方法 Promise.any(),它可以接受一个 Promise 对象数组,并在其中至少有一个 Promise 对象状态变成“已解决”时返回一个新的 Promise ...

    1 年前
  • Bootstrap 响应式设计的优化技巧

    响应式设计是现代网页设计的一项重要技术,它可以使得网页能够自适应不同设备的屏幕大小,以提供更好的用户体验。Bootstrap 是一个流行的前端框架,提供了丰富的响应式设计组件和工具,可以帮助开发者快速...

    1 年前
  • CSS Reset 的优缺点与比较

    在进行前端开发时,我们会发现不同的浏览器有不同的默认样式,为了解决这个问题,我们可以使用 CSS Reset 进行初始化样式。本文将主要介绍 CSS Reset 的优缺点并进行比较,同时还将提供一些示...

    1 年前
  • Redis 跨平台部署时需要注意的问题

    简介 Redis 是一个开源的高性能的 key-value 存储系统。Redis 可以作为缓存、消息队列、分布式锁等场景下使用。Redis 有多平台的支持,包括 Windows、Mac 和 Linux...

    1 年前
  • 解构赋值 —— 学习 ES6 的最热门功能之一

    在 JavaScript 的早期版本中,要从一个对象或数组中获取元素,常常需要通过循环、for-in 循环或对象中的属性来一个个获取。而在 ES6 中,引入了解构赋值这一特性,可以轻松地从对象或数组解...

    1 年前
  • 多说一句:Promise 多种应用方法分析

    Promise 是前端开发中异步编程的重要组成部分。它曾经是 ES6 标准中的新特性,现在已经成为了现代浏览器的标准特性之一。 Promise 是一种处理异步操作的方法,用来解决回调地狱的问题。

    1 年前
  • Socket.io 如何实现多终端数据同步

    随着移动互联网和Web应用的发展,前端开发中越来越需要处理实时数据同步的问题。即使在同一应用程序中,多个终端交互和修改数据,也需要实时传递这些修改并同步到其他终端上。

    1 年前

相关推荐

    暂无文章