【Mongodb】入门
概述
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
MongoDB以BSON结构作为存储和网络存储,BSON是一种二进制的JSON,在JSON基础上扩展,比JSON支持更多的类型,如Date 和 BinData
BSON结构具有以下特性
- 轻量级
- 可遍历
- 高效性
文档(Document):Mongodb以BSON结构存放的一条记录,相当于Row
集合(Collection):存放文档的集合,相当于Table
数据库(Database):存放集合和索引及其他信息的集合
配置文件
mongod.cfg
storage: # 数据存放的位置 dbPath: F:\Database\Mongodb\Data journal: # 持久化 enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: # 日志的记录形式 destination: file # 是否追加 logAppend: true # 日志的文件(注意是文件) path: F:\Database\Mongodb\Log\mongod.log # network interfaces net: # 绑定端口 port: 27017 # 绑定Ip bindIp: 127.0.0.1
启动Mongodb
1. 按配置文件启动
mongod -config mongod.cfg
2. 指定参数启动
mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log"
3. 安装服务
mongod --dbpath "F:\Database\Mongodb\Data" --logpath "F:\Database\Mongodb\Log\mongod.log" --serviceName "mongodb" --serviceDisplayName "mongodb" --install
连接Mongodb
cmd 执行
1. 默认配置
mongo
2. 连接字符串
mongo mongodb://localhost
CRUD操作
Create
1. 插入单个文档
db.logs.insertOne()
var data = {"UserId" : 10, "Operate" : "登录" , "CreateTime" : new Date() }; db.logs.insertOne(data);
返回
{ "acknowledged" : true, //是否写入成功 "insertedId" : ObjectId("5e929706fe1792ce954f65f1") //插入行的Id }
2. 插入多个文档
var data = [ {"UserId": 10, "Operate": "登录", "CreateTime": new Date() }, {"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() }, {"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() } ] db.logs.insertMany(data);
返回
{ "acknowledged" : true, "insertedIds" : [ ObjectId("5e9297dbfe1792ce954f65f2"), ObjectId("5e9297dbfe1792ce954f65f3"), ObjectId("5e9297dbfe1792ce954f65f4") ] }
3. db.collection.insert
insert可以插入单个文档(对象)/ 多个文档(对象的数组)
var data = [ {"UserId": 10, "Operate": "登录", "CreateTime": new Date() }, {"UserId": 10, "Operate": "点击首页", "CreateTime": new Date() }, {"UserId": 10, "Operate": "查看列表", "CreateTime": new Date() } ] db.logs.insert(data);
返回
单个文档
WriteResult({ "nInserted" : 1 })
多个文档
BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 3, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] })
4. 若不存在插入
在日常操作中,经常需要写不存在就写入的操作,在mongodb一种更新机制(upsert),若不存在就写入。
db.logs.update({ "UserId": 20 }, { "UserId": 20, "Operate": "登录", "CreateTime": new Date() }, { upsert: true })
支持upsert参数的方法
- db.collection.update()
- db.collection.updateOne()
- db.collection.updateMany()
- db.collection.findAndModify()
- db.collection.findOneAndUpdate()
- db.collection.findOneAndReplace()
Read
db.logs.find({"UserId":20});
db.logs.findOne({"UserId":10});
Update
1. 更新单个文档
db.logs.updateOne({ "_id": ObjectId("5e92b6d4fe1792ce954f6613") }, { $set: { "CreateTime": new Date() } })
2. 更新多个文档
db.logs.updateMany({ "UserId": 10 }, { $set: { "CreateTime": new Date() } })
Delete
1. 删除单个文档
db.logs.deleteOne({ "UserId": 20 })
2. 删除多个文档
db.logs.deleteMany({ "UserId": 10})
转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12685393.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗