如果你正在研究如何将数据库和 Node.js 进行集成,Mongoose 可能是您需要的工具。Mongoose 是一个为 MongoDB 设计的对象文档映射库,它可以让开发人员更加轻松地编写和阅读代码,同时获得有效的数据管理和查询功能。
在我们深入了解 Mongoose 如何工作之前,让我们先来熟悉一下定义一些术语:
- MongoDB:一个开源、高性能、基于文档的数据库。
- 文档:在 MongoDB 中,一个文档是由键值对组成的 BJSON 对象。
- 集合:在 MongoDB 中,文档存储在集合中。
- Mongoose:一个为 MongoDB 设计的对象文档映射库。
现在,让我们开始学习 Mongoose 的使用。
安装
安装 Mongoose 最简单的方法是使用 npm 命令行。在你的终端中输入以下命令即可:
npm install mongoose
Mongoose 默认导出一个构造函数。通过调用此构造函数并传递连接地址就可创建数据库连接对象。接下来,我们需要定义一个模式,这个模式定义了数据的结构。Mongoose 模式是一个简单而强大的方法,用于表示 MongoDB 文档中的字段和类型。现在,让我们来创建一个示例模式,在 MongoDB 中创建一个用户集合。
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- ----- ---------- - --- -------- --------- - ----- ------- --------- ---- -- --------- - ----- ------- --------- ---- -- ------ - ----- ------- --------- ----- ------- ---- -- -------- - ----- ----- -------- -------- - --- ----- --------- - ---------------------- ------------展开代码
在这里,我们定义了一个用户模式。它包含了 username, password, email, created 等字段。可以看到,每个字段都有一个类型,这些类型都是 mongodb 数据类型。文档中最重要的字段是 _id, 但是如果你没有定义它,Mongoose 会自动为你生成。现在,我们要创建一个 UserModel,使用上面的 UserSchema。
-- -------------------- ---- ------- ----- ------- - - --------- ---------- --------- -------------- ------ --------------------- -- ----- ---- - --- ------------------- --------------- ---------- -- - -- ----- - ------------------- ------- - ----------------------- ---展开代码
这里我们定义了一个数据请求 addUser、它接收一个用户对象作为参数。我们使用 UserModel 从模型中创建一个新的 Model 实例,然后将其保存到数据库中。
查询
Mongoose 提供了一些方法来查询数据库。下面我们将会介绍使用 Mongoose 进行查询,以及在查询结果中使用 chainable 方法进行过滤和排序。
查询单个文档
如果我们要查询一个文档,只需使用 findOne 方法即可。
User.findOne({ username: 'user123' }, (err, user) => { if (err) { console.error(err); return; } console.log(user); });
查询多个文档
要查询多个文档,只需使用 find 方法。
User.find((err, users) => { if (err) { console.error(err); return; } console.log(users); });
如果我们想筛选查询结果,可以在查询之后使用链式方法 filter。
-- -------------------- ---- ------- ----------- ------------------------------------ ----------- ----- -- - -- ----- - ------------------- ------- - ------------------ ---展开代码
这里我们使用了两个方法来创建查询:where 和 equals。使用 exec 方法来执行查询命令。
排序
我们还可以对文档集合进行排序,只需使用 sort 方法。
-- -------------------- ---- ------- ----------- ----------------- ----------- ------ -- - -- ----- - ------------------- ------- - ------------------- ---展开代码
在这里,我们调用的是 sort 方法,通过指定一个负号表示降序排列,否则表示升序排列。
更新
Mongoose 使用 update 和 save 方法来更新文档。
-- -------------------- ---- ------- --------------- - --------- --------- -- - --------- ---------------- -- ----- ---- -- - -- ----- - ------------------- ------- - ----------------- - --展开代码
在这里,我们使用updateOne方法进行更新。update 方法有三个参数:查询条件、更新的对象、回调函数。
-- -------------------- ---- ------- -------------- --------- --------- -- ----- ----- -- - -- ----- - ------------------- ------- - ------------- - ----------------- --------------- ------------ -- - -- ----- - ------------------- ------- - ------------------------- --- ---展开代码
在这里,我们使用 findOne 方法来查询文档对象,然后更新文档属性,最后使用 save 方法保存更改。
删除
剩下的最后一个操作是删除,Mongoose 提供了 deleteOne 和 deleteMany 方法进行删除操作。
User.deleteOne({ username: 'user123' }, (err, res) => { if (err) { console.error(err); return; } console.log(res); });
在这个例子中,我们删除了用户名为 user123 的文档。
总结
在这篇文章中,我们深入了解了 Mongoose 如何工作,并学习了如何使用它进行数据库管理,包括创建、查询、更新和删除操作。我们了解了文档、集合、模式等概念,并编写了一些示例代码来演示这些概念的使用方法。这些知识将会有助于您更好地了解 Mongoose 的使用方法,从而更好地管理 MongoDB 数据库。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a6207348841e98942a9c2c