当前位置: 首页 > news >正文

Mongodb(文档数据库)的安装与使用(文档的增删改查)

 1.数据库的简单介绍以及图形化使用

        数据库是存放数据的仓库,之前项目中的列表数据都是在服务器项目里面用json做持久化处理,存储在了磁盘中,然后用express框架自带的fs模块去操作文件读取和更新里面的内容,现在学数据库是专门帮助我们存放数据的一个服务器。

        首先数据库包括关系数据库比如mysql和非关系数据库mongoDB文档数据库。not onlt mysql。首先安装步骤去官网下载社区版,然后我安装到了/usr/local目录,然后在终端输入open .bash-profile暴露我们安装的文件路径,然后source .bash-profile启用暴露环境变量,然后就可以mongod --version查看安装好的版本,这里要brew install mongosh安装一个启动客户端的依赖,方便我们用这个命令启动数据库客户端。自动绑定数据库的服务器,可以增删改查服务器中的数据。

        

mongod --fork --dbpath data --logpath log/mongo.log --logappend

后台启动mongod服务器,数据存放路径和控制台日志路径 --port指定服务器端口号 默认27017

        这样现在我们开启了一个客户端而且绑定了服务器,可以对数据进行增删改查,比如输入show databases查看当前的数据库

        

        但是这样很不方便所以我们下载一个gui可视化操作界面,安装app启动之后输入客户端对应的地址这里是localhost:27017绑定服务器就可以了。

        

        这样就可以在shell中进行数据的增删改查了。

2.mongodb数据增删改查命令

        

        我们在可视化app的MongoDB shell终端练习。

       1.插入

/*
像数据库中插入文档db.<collection>.insertOne/Many({})向集合中插入一个或者多个文档当我们插入文档时 如果没有指定_id属性则数据库会自动为文档添加_id作为文档的唯一标识
*/
ObjectId()
ObjectId('68a2d36fbfb03bf43f69f144')
db.stus.insertOne({_id:'hello',name:'猪八戒',age:28,gender:"男"})
{acknowledged: true,insertedId: 'hello'
}
db.stus.find()
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 28,gender: '男'
}
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}

    2.查询

        

/*查询db.collection.find()find()用来查询集合中所有符合条件的文档find()中可以接受对象作为条件参数{}表示查询所有的文档
*/
db.stus.find({_id:'hello'})
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}
db.stus.find({age:99)
SyntaxError: Unexpected token, expected "," (1:20)
> 1 | db.stus.find({age:99)|                     ^
db.stus.find({age:99})
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
db.stus.find({age:99,name:'黄瓜'})
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
db.stus.findOne({age:99,name:'黄瓜'})
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
db.stus.find({}).length()
TypeError: db.stus.find({}).length is not a function
db.stus.find({}).Count()
TypeError: db.stus.find({}).Count is not a function
db.stus.find({}).count()
8
db.stus.find({}).length()
TypeError: db.stus.find({}).length is not a function
db.stus.find({})
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 28,gender: '男'
}
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}

3.更新  

db.stus.updateOne({name:'猪八戒'},{age:199})
MongoInvalidArgumentError: Update document requires atomic operators
db.stus.updateOne({ name: '猪八戒' },{ $set: { age: 199 } }
)
{acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0
}
db.stus.find({})
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 199,gender: '男'
}
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}
db.stus.update({ name: '猪八戒' },{ age: 199 } 
)
DeprecationWarning: Collection.update() is deprecated. Use updateOne, updateMany, or bulkWrite.
MongoInvalidArgumentError: Update document requires atomic operators
db.stus.updateOne({ name: '猪八戒' },{ $unset{ gender:'' } }
)
SyntaxError: Unexpected token, expected "," (3:10)1 | db.stus.updateOne(2 |   { name: '猪八戒' },
> 3 |   { $unset{ gender:'' } }|           ^4 | )
db.stus.updateOne({ name: '猪八戒' },{ $unset{ gender:'' } }
)
SyntaxError: Unexpected token, expected "," (3:10)1 | db.stus.updateOne(2 |   { name: '猪八戒' },
> 3 |   { $unset{ gender:'' } }|           ^4 | )
db.stus.updateOne({ name: '猪八戒' },{ $unset:{ gender:'' } }
)
{acknowledged: true,insertedId: null,matchedCount: 1,modifiedCount: 1,upsertedCount: 0
}
db.stus.find({})
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 199
}
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}
db.stus.updateMany({ name: '黄瓜' },{ $unset:{ gender:'' } }
)
{acknowledged: true,insertedId: null,matchedCount: 2,modifiedCount: 2,upsertedCount: 0
}
db.stus.find({})
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 199
}
{_id: ObjectId('68a2d2ddbfb03bf43f69f140'),name: '黄瓜',age: 99
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f141'),name: '黄瓜',age: 99
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f143'),name: '西瓜',age: 99,gender: '女'
}
{_id: 'hello',name: '猪八戒',age: 28,gender: '男'
}

4.删除

db.stus.remove({_id:'hello'})
DeprecationWarning: Collection.remove() is deprecated. Use deleteOne, deleteMany, findOneAndDelete, or bulkWrite.
{acknowledged: true,deletedCount: 1
}
db.stus.remove({ name: '黄瓜' },
)
{acknowledged: true,deletedCount: 2
}
db.stus.find({})
{_id: ObjectId('68a2a5feddbbb4d84e35173d'),name: 'wangdefa',wangba: ''
}
{_id: ObjectId('68a2a7cc674492ed16f720d9'),name: 'lichenyang'
}
{_id: ObjectId('68a2d2a8bfb03bf43f69f13f'),name: '猪八戒',age: 199
}
{_id: ObjectId('68a2d2f0bfb03bf43f69f142'),name: '豆芽',age: 99,gender: '女'
}

        增删改查注意点,插入会自动添加-id作为唯一标识符,更新和删除都需要一个接收对象作为参数判断更新或者删除哪一个集合中的文档,查询返回的不是数组是一个游标对象,需要转化为数组才能用length方法去查看当前数据库中有多少集合

        

http://www.lryc.cn/news/624813.html

相关文章:

  • 可实时交互的AI生成世界,腾讯发布的AI框架Yan
  • 对象存储 COS 端到端质量系列 —— 终端网络诊断工具
  • EMC PCB 设计规范
  • 上汽通用牵手Momenta,别克至境L7全球首发搭载R6飞轮大模型
  • 用随机森林填补缺失值:原理、实现与实战
  • 深度学习必然用到的概率知识
  • 94、23种设计模式之工厂方法模式
  • Redis--day8--黑马点评--分布式锁(一)
  • 单片机驱动LCD显示模块LM6029BCW
  • 机器学习-决策树:从原理到实战的机器学习入门指南
  • LLM - windows下的Dify离线部署:从镜像打包到无网环境部署(亲测)
  • VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战
  • 【Python 小工具】一键把源表 INSERT SQL 转换成目标表 INSERT SQL
  • 华为认证 HCIA/HCIP/HCIE 全面解析(2025 版)
  • Next.js 性能优化:打造更快的应用
  • docker——docker执行roslaunch显示错误
  • Harmonyos之字体设置功能
  • Java任务执行队列的优化
  • 王树森深度强化学习DRL(三)围棋AlphaGo+蒙特卡洛
  • 《Python学习之第三方库:开启无限可能》
  • 【网络安全实验报告】实验六: 病毒防护实验
  • 【加密PMF】psk-pmk-ptk
  • 使用WinDbg对软件崩溃信息进行抓包的方法
  • AI 在金融领域的落地案例
  • 为Vue TypeScript 项目添加 router 路由,跳转到Chat AI页面
  • 2025 年无毒冷却液市场深度全景调研及投资前景分析
  • Qwen Code宣布每天免费调用2000次,且无Token限制
  • 物联网智能边缘架构:流数据处理与设备管理的协同优化
  • Linux常用命令详解
  • 增强服务器防御能力的自动化工具 Fail2Ban