标题:Mongoose 中文官方文档翻译和使用入门教程
摘要:本文旨在介绍 Mongoose 数据库的使用方法,详细介绍了简单的 CRUD 操作,数据模型建立和查询等常用操作,并附有示例代码,帮助读者更快上手 Mongoose 的使用。
正文:
一、Mongoose 简介
Mongoose 是基于 MongoDB 驱动的 ORM 框架,通过 Mongoose 可以更加便捷地通过 Node.js 操作 MongoDB。Mongoose 提供的操作方法拥有更强大的特性,如简化的 CRUD 操作,更丰富的验证规则以及方便的中间件支持等等。
二、Mongoose 安装和连接 MongoDB
进入工程目录下,使用 npm 命令安装 mongoose:
npm install mongoose --save
连接 MongoDB 通常需要两个参数:MongoDB 的 URL 地址和数据库名称。
Mongoose 会默认连接到 test 数据库,代码如下所示:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test');
也可以使用一个可选对象作为第二个参数来设置更多选项:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
三、定义 Schema 和 Model
Schema 是一种定义数据结构的方式,相当于一个表结构的定义。Model 是由 Schema 构造的类,在 Model 中可以定义基本的 CRUD 操作,用于与数据库进行交互。
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- ------- ---- ------ --- ----- ---- - ---------------------- ------------
其中,userSchema 是一个用户数据结构,包含了用户的姓名和年龄。User 是一个由 userSchema 构造的 model。
四、执行 CRUD 操作
通过定义好的 Schema 和 Model,可以轻松执行 CRUD 操作。
4.1 增加数据
-- -------------------- ---- ------- ----- ------- - --- ------ ----- ------- ---- -- --- ------------------ ----- -- - -- ----- ------ ------------------- ---------------- - - ----- -- -------------- ---
4.2 查询数据
User.find((err, users) => { if (err) return console.error(err); console.log(users); })
4.3 修改数据
User.updateOne({ name: 'test' }, { age: 25 }, (err, res) => { if (err) return console.error(err); console.log(res); });
4.4 删除数据
User.deleteOne({ name: 'test' }, (err, res) => { if (err) return console.error(err); console.log(res); });
五、查询数据
Mongoose 提供多种查询方式,包括条件查询、排序、分页等等。其中最常见的条件查询如下:
User.find({ age: { $gt: 18 }}, (err, users) => { if (err) return console.error(err); console.log(users); })
在此示例中,我们通过 find 方法来查找年龄大于 18 岁的用户。其中,$gt 表示大于。
六、总结
在本文中,我们介绍了 Mongoose 的基本使用方法,包括创建 Schema 和 Model,执行 CRUD 操作以及常见的查询操作。希望读者能够根据本文能够快速地上手 Mongoose,实现更加便捷的数据存储操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b3ad9848841e9894fee0b8