网站头部怎样做有气势,本地wordpress很慢,句容网络推广,wordpress修改邮件内容文章目录 一#xff1a;MongoDB 简介1.1 什么是 MongoDB1.2 特点1.3 与关系数据库的区别#xff1a;1.4 资源链接#xff1a; 二#xff1a;安装 MongoDB2.1 安装前的准备2.2 安装、启动 MongoDB2.3 创建用户 MongoDB 三、连接四#xff1a;MongoDB 基础操作4.1 库操作MongoDB 简介1.1 什么是 MongoDB1.2 特点1.3 与关系数据库的区别1.4 资源链接 二安装 MongoDB2.1 安装前的准备2.2 安装、启动 MongoDB2.3 创建用户 MongoDB 三、连接四MongoDB 基础操作4.1 库操作4.2 集合操作4.3 文档操作查询编辑删除排序文档关联引用 五Mongoose 使用5.1 Mongoose 介绍5.2 安装5.3 引入5.4 建立链接5.5 创建模式5.6 创建模型5.7 查询数据库, 查看已什么开头的名字5.8 增删查改 六备份 、恢复数据七结语 一MongoDB 简介
1.1 什么是 MongoDB
MongoDB 是一个开源、基于文档的 NoSQL 数据库使用文档导向的数据模型是一个它以其高性能、高可用性和易扩展性而闻名非常适合处理大量的分布式数据。它以 BSON二进制 JSON格式存储数据这使得它在存储复杂数据结构时非常灵活。
1.2 特点
高性能MongoDB 提供高性能的数据持久化。高可用性通过副本集Replica Sets实现数据的自动故障转移。易扩展性通过分片Sharding支持水平扩展。
1.3 与关系数据库的区别
MongoDB 中存储的文档必须有一个_id键。这个键的值可以是任何类型的默认是个 ObjectId 对象。MongoDB 本身不支持传统关系型数据库中的 JOIN 操作但支持引用
SQL 术语/概念MongoDB 术语/概念解释/说明databasedatabase数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins子文档、嵌套表连接MongoDB 不支持primary keyprimary key主键MongoDB 自动将_id 字段设置为主键
1.4 资源链接
mongoosedockermongo docker
二安装 MongoDB
2.1 安装前的准备
这里我使用 docker 这样方便点如果没有安装 docker需要先进行 docker 安装
2.2 安装、启动 MongoDB
# 拉取
docker pull mongo:latest# 运行 , mongodb默认的端口时 27017
docker run -d --name mongo -p 8017:27017 mongo
2.3 创建用户 MongoDB
# 进入容器docker exec -it mongo mongo admin# 创建用户
db.createUser({ user:root,pwd:123456,roles:[ { role:userAdminAnyDatabase, db: admin},readWriteAnyDatabase]});# 验证
db.auth(root, 123456)三、连接 使用 Navicat 进行连接测试 使用上面设置的用户名、密码 root , 123456 MongoDB 中默认的数据库为 test如果你没有创建新的数据库集合将存放在 test 数据库中。 四MongoDB 基础操作
4.1 库操作 MongoDB 中默认的数据库为 test如果你没有创建新的数据库集合将存放在 test 数据库中。 // 显示所有数据库
show dbs// 切换数据库use demo
db
// 输出 demo// 新增 , 插入一条数据会自动创建这个数据库 和 集合并插入该条数据
db.demo.insertOne({name:demo name})// 删除库
db.dropDatabase()
4.2 集合操作
db.createCollection(demo);
// 新增 , 插入一条数据会自动创建这个数据库 和 集合并插入该条数据
db.demo.insertOne({ name: demo name });// 更新集合
db.adminCommand({renameCollection: test.demo,to: test.demos,
});
// 删除集合
db.demo.drop();4.3 文档操作
常用的插入文档方法包括
db.collection.insertOne()插入单个文档db.collection.insertMany()插入多个文档db.collection.save()类似于 insertOne()。如果文档存在则该文档会被更新如果文档不存在则会插入一个新文档
查询
MongoDB 查询文档使用 find()、findOne() 方法。
// 查全部
db.myCollection.find({});
// 条件查询
db.myCollection.find({ age: { $gt: 25 } });编辑
常用的方法包括 updateOne()、updateMany()、replaceOne() 和 findOneAndUpdate()。
// 单条
db.myCollection.updateOne({ name: jty }, // 过滤条件{ $set: { age: 26 } } // 更新操作
);
// 多条db.myCollection.updateMany({ age: { $lt: 30 } }, // 过滤条件{ $set: { status: active } } // 更新操作
);// 替换db.myCollection.replaceOne({ name: jty }, // 过滤条件{ name: jty, age: 31 } // 新文档
);删除
常用的删除文档方法包括 deleteOne()、deleteMany() 以及 findOneAndDelete()。
db.demo.deleteOne({ name: jty });
db.demo.deleteMany({ status: 1 });
db.demo.findOneAndDelete({ name: Charlie });排序
指定要排序的字段及排序顺序。
1 表示升序-1 表示降序。
// 按 age 字段升序排序
db.myCollection.find().sort({ age: 1 });文档关联
文档间可以通过嵌入和引用来建立联系。
MongoDB 中的关系可以是
1:1 (1 对 1)1: N (1 对多)N: 1 (多对 1)N: N (多对多)
引用
// 假设我们有两个集合users 和 posts
db.users.insertOne({ _id: 1, name: jty });
db.posts.insertOne({ _id: 101, authorId: 1, content: Hello, MongoDB! });// 查询用户及其发布的帖子
const user db.users.findOne({ _id: 1 });
const posts db.posts.find({ authorId: 1 });// 在应用层合并结果
console.log(user.name,posts.map((post) post.content)
);五Mongoose 使用 先介绍下 mongoose 的一些概念、然后以常见功能开发来举例实现一些 api 介绍如子文档嵌套、关联查询、查询密码隐藏、默认值设置、MD5 加密、文档数组更新 5.1 Mongoose 介绍 Mongoose 中的一切都始于结构Schema没有模型有一个默认 Id _id 他是 ObjectId() 类型的 模型(Model) 是从 Schema 定义编译而来的奇特构造函数, 模型的一个实例称为 document。模型负责从底层 MongoDB 数据库创建和读取文档。 5.2 安装
npm install mongoose --save5.3 引入
const mongoose require(mongoose);5.4 建立链接
await mongoose.connect(mongodb://127.0.0.1:27017/test);
// 添加用户认证
await mongoose.connect(mongodb://root:123456localhost:8017/test?authSourceadmin);5.5 创建模式
const UserSchema new mongoose.Schema({name: String,
});5.6 创建模型
const User mongoose.model(User, UserSchema);5.7 查询数据库, 查看已什么开头的名字
await User.find();
await User.find({ name: /^fluff/ });5.8 增删查改 通过对模型的操作可以完成增删查改 增
// !-- 构建文档 --const user new User({ name: jty });
console.log(user.name); //
// !-- 保存进数据库 --
await user.save();// 或者下面的方式
await User.create({ name: jty });
await User.insertMany([{ name: jty }]);删
await User.deleteOne({ name: jtt });查
await User.find({}); // 查询全部
await User.find({ name: /^jty/ }); // 正则查询
await User.findOne({ name: jty, age: { $gte: 18 } }).exec(); // 条件查询改
await Tank.updateOne({ name: jty }, { name: jtt });
await Tank.updateMany({ name: jty }, { name: jtt });六备份 、恢复数据
使用 mongodump 工具备份 MongoDB 数据库。使用 mongorestore 工具恢复备份的数据。
七结语
MongoDB 是一个功能强大的 NoSQL 数据库适用于各种规模的应用。本文提供了 MongoDB 的基础知识和一些高级特性帮助你快速上手 MongoDB 和 使用 mongoose 进行 Node 后端开发 更多特性建议阅读官方文档并实践不同的操作和配置。