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.插入

css 复制代码
/*
像数据库中插入文档
        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.查询

css 复制代码
/*查询
        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.更新

css 复制代码
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.删除

css 复制代码
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方法去查看当前数据库中有多少集合

相关推荐
Java微观世界3 分钟前
Object核心类深度剖析
java·后端
MrSYJ8 分钟前
为什么HttpSecurity会初始化创建两次
java·后端·程序员
用户48221371677524 分钟前
C++——类和对象
后端
bcbnb1 小时前
移动端webview网页调试实战,首屏加载缓慢问题的排查与优化
后端
00后程序员1 小时前
Charles抓包工具全面解析 API调试与网络分析的必备利器
后端
AAA修煤气灶刘哥1 小时前
Java+AI 驱动的体检报告智能解析:从 PDF 提取到数据落地全指南
java·人工智能·后端
xcya1 小时前
深入理解“看门狗”机制:一种优雅的自动续期模式
后端
行路难多歧路今安在1 小时前
开源算法or-tools运用之背包问题
后端
雨落倾城夏未凉2 小时前
9.c++new申请二维数组
c++·后端
二闹2 小时前
后端的请求体你选对了吗?
后端