在前端开发中,数据存储是必不可少的一环,而 MongoDB 是一款非常流行的 NoSQL 数据库,其具有高灵活性、易扩展性、高性能等优点,在前端领域也有着广泛应用。本文将从入门到进阶的角度,为大家介绍 MongoDB 的相关知识。
MongoDB 入门
什么是 MongoDB
MongoDB 是一个基于分布式文件存储的数据库系统,是一个面向文档(BSON)的 NoSQL 数据库。相比传统的关系型数据库(如 MySQL),MongoDB 不需要预定义表结构,可以自由存储复杂的文档数据类型。
安装 MongoDB
首先需要在官网下载 MongoDB,选择适合自己的版本进行安装,接下来我们来看一下用 Homebrew 进行安装的步骤:
- 安装 Homebrew
打开终端并输入以下代码,安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装 MongoDB
使用 Homebrew 安装 MongoDB,输入以下代码:
brew install mongodb-community@4.4
- 启动 MongoDB
终端运行 mongod
命令,启动 MongoDB:
mongod --config /usr/local/etc/mongod.conf
数据库基本操作
启动 MongoDB 后,我们可以通过 MongoDB 提供的命令行工具 mongo
进行数据库的基本操作。
- 查看数据库列表
show databases
- 创建一个新的数据库
use database_name
- 查看当前使用的数据库
db
- 插入一条文档数据
db.collection_name.insertOne({"key": "value"})
- 查询文档数据
db.collection_name.find({"key": "value"})
MongoDB 进阶
数据建模
在 MongoDB 中,数据是以文档的形式存储的,因此在数据建模的过程中需要考虑文档的结构和属性。
文档结构
MongoDB 中的文档是由键值对构成,键是字符串类型,值可以是基本数据类型,也可以是嵌套的文档。
例如,一个文档可以有如下的结构:
-- -------------------- ---- ------- - ------- ------ ------ --- ---------- - ----------- ---------- ------- ---------- ----------- ---------- --------- ------- --- -- - -
属性类型
MongoDB 支持的数据类型有:
- 基本数据类型:String、Number、Boolean、Null
- 数组类型:Array
- 日期类型:Date
- 对象 ID:ObjectID
- 二进制数据:BinData
- 正则表达式:RegularExpression
- JavaScript 代码:Code
- 符号:Symbol
- 时间戳:Timestamp
- 最小值和最大值:MinKey、MaxKey
数据模式设计
在进行数据建模时,需要考虑以下几个问题:
- 数据库需求:需要存储哪些数据?
- 数据类型:每个属性应该是什么数据类型?
- 数据模式:如何管理它们之间的关系?
以下是一个学生的数据模式设计示例:
-- -------------------- ---- ------- - ------- ------- ------ --- --------- ------- -------- - ------- ------ --- ---------- ----- -- --------- - - ---------- -------------- -------- -- -- - ---------- ---------- -------- -- - - -
数据 CURD 操作
在 MongoDB 中,CURD 操作(增删改查)是基本操作,我们可以通过如下的方式进行数据的操作。
增加文档
使用 insertOne()
方法插入一个文档:
db.students.insertOne({ "name": "John", "age": 18 })
查找文档
使用 find()
方法查找一个文档:
db.students.find({"name": "John"})
通过 pretty()
方法使输出格式更加清晰可读:
db.students.find({"name": "John"}).pretty()
更新文档
使用 updateOne()
方法更新一个文档:
db.students.updateOne({"name": "John"}, {$set: {"age": 20}})
删除文档
使用 deleteOne()
方法删除一个文档:
db.students.deleteOne({"name": "John"})
Node.js 中使用 MongoDB
在 Node.js 中,我们可以使用第三方库 mongoose 来方便地对 MongoDB 进行 CURD 操作。
安装 mongoose
使用 npm 安装 mongoose:
npm install --save mongoose
连接到 MongoDB
通过 mongoose 连接到 MongoDB:
-- -------------------- ---- ------- ----- -------- - ------------------- --------------------------------------------------- - ---------------- ----- ------------------- ----- ----------------- ----- -- ----- -- - ------------------- -------------- --------------------------- ----------- --------- --------------- ---------- - ---------------------- -- --------- --
定义 Schema
在使用 mongoose 前,需要先定义数据模式的 Schema:
-- -------------------- ---- ------- ----- -------- - ------------------- ----- ------------- - --- ----------------- ----- ------- ---- ------- ------- ------- ------ - ----- ------- -------- ------ -- ------- - - -------- ------- ------ ------ - - -- ----- ------- - ------------------------- -------------- -------------- - -------
增加数据
通过模型来创建数据:
-- -------------------- ---- ------- ----- ------- - --- --------- ----- ------- ---- --- ------- ------- ------ - ----- ------ --- -------- ----- -- ------- - - -------- -------------- ------ -- -- - -------- ---------- ------ -- - - -- --------------
查询数据
通过模型来查询数据:
Student.find({ name: 'John' }, function (err, students) { if (err) console.error(err) console.log(students) })
更新数据
通过模型来更新数据:
Student.updateOne({ name: 'John' }, { $set: { age: 20 } }, function (err, result) { if (err) console.error(err) console.log('updated:', result) })
删除数据
通过模型来删除数据:
Student.deleteOne({ name: 'John' }, function (err) { if (err) console.error(err) console.log('deleted') })
总结
本文从入门到进阶的角度,为读者介绍了 MongoDB 的相关知识,包括 MongoDB 的基本概念、安装、使用、数据建模、CURD 操作以及在 Node.js 中使用 MongoDB。MongoDB 的开销一般比 SQL 高,但使用更简便,对于大小敏感的应用程序,MongoDB是一种高性能、低延迟的选择。通过深入学习 MongoDB,我们可以更好地应用它来实现我们的业务需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fea34b95b1f8cacdd57bcb