1.MongoDB是什么?
- 一个基于文件存储的分布式NoSQL(非关系型)数据库系统。
- 数据结构由键值对(key,value)组成
- 拥有非常强大的查询能力
MongoDB 采用文档存储模型,适用于处理大量非结构化或半结构化数据。与传统的关系型数据库不同,MongoDB以灵活的JSON-like格式(BSON)存储数据,支持动态 schema 设计。
核心特点
- 文档模型:数据以文档形式存储,每个文档可以包含嵌套结构,适合复杂数据场景。
- 水平扩展:支持分片(Sharding)技术,通过分布式集群实现高吞吐量和大规模数据存储。
- 高可用性:通过副本集(Replica Set)提供自动故障转移和数据冗余。
- 丰富的查询语言:支持索引、聚合管道、地理空间查询等高级功能。
使用场景:
1.对数据处理性能有较高要求
2.需要借助缓存层来处理数据
3.需要高度伸缩性
2.安装MongoDB
1.奇数版本为测试版本,偶数为稳定版
2. 3.2版本之后,不再支持32位操作系统
安装路径:Download MongoDB Community Server | MongoDB
安装成功后,相关使用命令:
// 使用数据库
use mytest
// 向该数据库的cc表里添加一条数据,如果cc表不存在则会自动创建一张表并添加
db.cc.insertOne({x:1,y:2})
// 查询这张表符合条件的数据,如果条件为空则查出所有数据,否则查出符合条件的数据
db.cc.find()
// 找出字段username为list的数据
db.cc.find({
username:'list'
})
// 找出age字段大于15的数据,小于用$lt
db.cc.find({
age:{$gt:15}
})
// 如果有多条数据符合条件,findOne则只显示一条数据
db.cc.findOne({
age:{$gt:15}
})
// 更新或修改
// 查找出一条数据,username字段值为admin的数据,把age值修改为23 修改一条数据
db.cc.updateOne({username:"admin"},{$set:{age:23}})
// 更新多条数据,匹配条件为age大于18,把username全部改为Monsy
db.cc.updateMany({age:{$gt:18}},{$set:{username:"Monsy"}})
// 删除表数据
// 删除一条数据,匹配条件为age为18,如果有多条匹配数据,只删除最后一条
db.cc.deleteOne({age:18})
// 删除多条数据,匹配条件为age大于18
db.cc.deleteMany({age:{$gt:18}})
// 删除这个数据库,一定必须要在这个数据库中,才能删除
db.dropDatabase()
// 删除ff表
db.ff.drop()
// 插入多条数据
db.cc.insertMany([
{x:1,y:2},
{x:2,y:3}
])
mongoDB再nodejs中使用文档:MongoDB节点驱动程序- Node.js驱动程序- MongoDB Docs
安装:
npm install mongodb
在项目中连接数据库并处理数据案例:
// 引入 MongoDB 客户端 用于连接和操作 MongoDB 数据库
const { MongoClient } = require("mongodb");
// 创建数据库连接实例
const client = new MongoClient("mongodb://127.0.0.1:27017");
// 数据库连接函数
const clientFunc = async (clientTable) => {
// 建立数据库连接 await 关键字确保连接建立完成后再执行后续代码
await client.connect();
// 获取名为 'mytest1' 的数据库实例
// 如果该数据库不存在,MongoDB 会在首次插入数据时自动创建
const db = client.db("mytest1");
// 获取指定名称的集合(collection)也就是表示数据库中的表
return db.collection(clientTable);
};
// 使用 async 关键字声明的函数总是返回一个 Promise 对象
const main = async () => {
const cc = await clientFunc("cc");
// 查询表所有的数据
let data = await cc.find();
// 新增
const data1 = await cc.insertOne({ name: "张三" });
console.log(data1);
console.log(await data.toArray());
};
// 确保在主函数执行完毕后关闭数据库连接
main().finally(() => client.close());