Node学习-第五章-数据可持续化

MongoDB

什么是mongoDB?

mongodb 呢,它是一个基于文档存储的分布式非关系性数据库系统。

"基于文档"指的是:所有存放的的数据都是以文件存到我们的磁盘里面的。

其中数据库系统底层是通过C语言开发,对文件的存储性能还是十分不错的。

关系性数据库与非关系型的区别

  1. 数据存储方式
    关系型数据库,数据以行和列的形式存储在表格中,表格通过关系相互连接。而非关系型数据库则不采用固定的表格格式,数据通常存储在数据集中,如文档、键值对或图形结构。
    2.数据扩展方式
    关系型数据库通常通过纵向扩展,即提高单台服务器的处理能力来扩展。而非关系型数据库则更倾向于横向扩展,通过添加更多的服务器节点来分担负载,这种扩展方式更适合大数据量和高并发的场景。

适用场景有哪些?

MongoDB 数据库的优势大概有这些:高可用性:MongoDB采用了分布式架构,数据会自动分布在多台服务器上,从而实现高可用性和容错性。如果一个节点故障,系统会自动将其从集群中删除,并将数据迁移至其他节点上。

高扩展性:MongoDB可以轻松地进行水平扩展和垂直扩展。在水平扩展时,可以添加更多的服务器和节点,以增加处理能力和存储容量;在垂直扩展时,则可以升级硬件设备,以提高单机性能。

灵活性:MongoDB支持动态模式和动态查询,可以根据应用程序需求灵活调整文档结构和查询条件。此外,它还支持复杂的文档嵌套、数组类型和地理位置等特性。

性能优势:MongoDB使用了内存映射文件和快速索引等技术,具有较高的读写性能和查询效率。此外,MongoDB还支持分片和副本集等技术,以进一步提高性能和可靠性。

参考:https://zhuanlan.zhihu.com/p/689256760
MongoDB适合以下几种应用场景:

社交场景:使用MongoDB存储用户信息,朋友圈信息,通过地理位置索引实现附近的人、定位功能。

物联网场景:使用MongoDB存储设备信息、设备汇报的日志信息、并对这些信息进行多维度分析。

视频直播:使用MongoDB存储用户信息、点赞互动信息。

内容管理:使用MongoDB存储文章、评论、标签等内容,支持全文搜索、分类、排序等功能。

参考:https://zhuanlan.zhihu.com/p/689256760

常用mongoShell 命令

// 启动数据库

brew services start mongodb-community

// 停用数据库

brew services stop mongodb-community

// mongo 指令 需要安装 mongosh

// MongoDB的Shell工具mongosh是一个全功能的JavaScript和Node.js的14.x REPL与MongoDB的部署交互环境。我们通过它可以直接对数据库进行查询和操作

mongosh // 启用shell 命令

1.数据库操作指令

show databases 或 show dbs // 展示有哪些数据库

use 数据库名 // 切换或创建数据

db.dropDatabase() // 删除当前数据库

db / db.getName()/ 查看当前数据库名称

db.stats() // 显示当前数据库状态

db.version() // 查看当前版本

2.集合操作指令

db.createCollection(集合名, [参数]) // 创建集合

show collections/show tables // 查看集合

db.集合名.drop() // 删除集合

3.数据操作指令

1、新增

db.集合名.insert({"键名1":值1, "键名2": 值2 ...})

2、查询

db.集合名.findOne() // 查询第一条

db.集合名.find() // 查询全部

db.集合名.find({查找条件}) // 按条件查找

例如:

db.user.find({"age": {$gt: 24}}) // 查询年龄大于24岁的,user集合中符合的数据

3、修改

db.集合名.update({查询条件}, {修改后结果}) // 修改整行

db.students.update({查找条件}, {KaTeX parse error: Expected 'EOF', got '}' at position 41: ...修改的字段名2": "值2"}}̲) #修改指定字段的值 db....set:{"age":26}})

4、删除

db.集合名.remove({查询条件})

db.集合名.remove({}) # 删除全部数据

db.user.remove({"name":"张三"})

db.user.remove({})

node 中使用monogodb

  1. 安装mongodb 依赖
javascript 复制代码
npm init -y
npm install  mongodb
  1. 实际操作代码
javascript 复制代码
const { MongoClient } = require("mongodb"); // 引入方法
const client = new MongoClient('mongodb://127.0.0.1:27017') // 链接数据库服务地址
// const main = async()=>{
//   await client.connect(); // 创建链接
//   const db = client.db('test'); // 获取目标数据库
//   const cc = db.collection('cc'); // 获取目标数据集合
//   var d = await cc.find(); // 打印数据
//   console.log(await d.toArray())
// }
// main().finally(()=>{
//   client.close();  // 链接关闭 释放线程
// });
const clientFun = async function(c){
  await client.connect(); // 创建链接
  const db = client.db('test');
  return db.collection(c)
}
const main = async ()=>{
  var cc = await clientFun('cc');
  // 添加操作
  // 单次
  // var d = await cc.insertOne({name:'ss', age:10})
  // 多组数据添加
  // var d = await cc.insertMany([{name:'ss2', age:11}, {name:'ss3', age:12}, {name:'ss4', age:14}])
  // console.log(d)

  // 查询操作
  // 单个查询   
  // var d = await cc.findOne({age:{$gt:11}})
  // console.log(d)
  // 查询 多个
  // var d = await cc.find({age:{$gt:11}})
  // console.log(await d.toArray())

  // 更改
  // 单个更改
  // var d = await cc.updateOne({age: {$gt:9}}, {$set:{name: 'lisi', age:100}});
  // console.log(d)
  //多个数据更改
  // var d = await cc.updateMany({age:{$gt:11}}, {$set:{name: '改起来'}})
  // console.log(d);

  // 删除操作 
  // 单个删除
  // const d = await cc.deleteOne({age: {$lt: 11}});
  // 多个数据删除
  const d = await cc.deleteMany({age: {$gt: 99}});
  console.log(d)
}
main().finally(()=>{
    client.close();  
});
相关推荐
biter00881 小时前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
Code哈哈笑2 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
QQ同步助手3 小时前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
流浪的小新3 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习
A懿轩A4 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
南宫生12 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__12 小时前
Web APIs学习 (操作DOM BOM)
学习
数据的世界0114 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐14 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO17 小时前
qcow2镜像大小压缩
学习·性能优化