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();  
});
相关推荐
西岸行者9 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意9 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码9 天前
嵌入式学习路线
学习
毛小茛9 天前
计算机系统概论——校验码
学习
babe小鑫9 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms9 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下9 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。9 天前
2026.2.25监控学习
学习
im_AMBER9 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J9 天前
从“Hello World“ 开始 C++
c语言·c++·学习