MongoDB的基本操作

🌷数据库准备

🎈Mongoshell

1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log

bash 复制代码
cd /home/ubuntu
mkdir -p mongodb/data
mkdir -p mongodb/log
touch mongodb/log/mongodb.log

执行mongodb命令启动mongdb服务

bash 复制代码
mongod --dbpath /home/ubuntu/mongodb/data --logpath /home/ubuntu/mongodb/log/mongodb.log --logappend --fork

启动mongodb

bash 复制代码
mongodbsh

🎈创建数据库

bash 复制代码
use 数据库名
如果数据库不存在,则创建数据库,如果存在,则直接切换到指定路径

例:创建mydb数据库

bash 复制代码
use mydb

查看所有数据库

bash 复制代码
show dbs

可以看到,新创建的mydb不在数据库列表中,这是因为MongoDB中数据库和集合的创建都输入懒创建,要想显示它们,向mydb数据库中插入一些数据即可

MongoDB中默认的数据库为test,如果没有创建新的数据库,集合将默认存放在test数据库中

🎈删除数据库

bash 复制代码
db.dropDatabase()

可以使用db命令查看当前数据库名

这里以删除mydb数据库为例

🌷集合操作

🎈显式创建集合

bash 复制代码
db.createCollection(name,option)

例如在mydb下创建student集合**(注意:先创建数据库,在创建集合)**

🎈重命名集合

bash 复制代码
db.mydb.renameCollection()

例:将mydb改名为myDB

🎈查询所有集合

bash 复制代码
show collections

🎈删除集合

bash 复制代码
db.集合名.drop()

例:删除myDB集合

🌷文档操作

🎈插入文档

1.插入单个文档

bash 复制代码
db.集合名.insertOne({})

2.插入多个文档

bash 复制代码
db.集合名.insertMany({[]})

例:在mydb数据库中student集合下插入如下图所示的student集合的表

bash 复制代码
db.student.insertMany([
{name:'Alice',age:20,gender:'female',major:'Computer Science'},
{name:'Bob',age:22,gender:'male',major:'Mathmatics'},
{name:'Charlie',age:21,gender:'male',major:'Physics'}])

插入完成后用find()方法查看集合

还可以先将文档定义成一个变量,再进行插入

bash 复制代码
s={name:'Alice',age:20,gender:'female',major:'Computer Science'}
db.student.insertOne(s)
db.stuent.find({})

🎈更新文档

1.单条更新:updateOne

语法:
bash 复制代码
db.collection.updateOne(<query>,<objNew>)
  • query:查询的条件
  • objNew:更新的操作

例:我们更新stuinfo文档中名叫nancy的更改为king

cpp 复制代码
db.stuinfo.updateOne({name: 'nancy'}, {$set: {name: 'king'}})

再用find方法查看一下是否修改成功

bash 复制代码
db.stuinfo.find({})

2.多条更新:updateMany

语法:
bash 复制代码
db.collection.updateMany(<query>,<objNew>)
  • query:查询调价
  • objNew:更新操作

例:将姓名name为"nancy"的所有文档更新为"joker"

bash 复制代码
db.stuinfo.updateMany({name: 'nancy'}, {$set: {name: 'joker'}})
db.stuinfo.find({})

操作结果如图:

🎈删除文档

deleteOne()和deleteMany()方法可以来移除集合中的数据

语法格式:

bash 复制代码
db.COLLECTION_NAME.deleteOne(<query>)
db.COLLECTION_NAME.deleteMany(<query>)

参数说明:

query:delete的查询条件,类似sql delete查询内where后面的语句

(1)删除集合col下全部文档

bash 复制代码
db.col.deleteMany({})
db.col.find({})

具体操作如图所示:

(2)删除指定条件的文档

删除集合stuinfo中姓名name为joker的全部文档

bash 复制代码
db.stuinfo.deleteMany({name:'joker'})
db.stuinfo.find({})

删除年龄age为18的第一个文档

bash 复制代码
db.stuinfo.deleteOne({age: 18})
db.stuinfo.find({})
相关推荐
杨超越luckly5 分钟前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
Elastic 中国社区官方博客13 分钟前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
仍然.17 分钟前
MYSQL--- 聚合查询,分组查询和联合查询
数据库
一 乐21 分钟前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
啦啦啦_999924 分钟前
Redis-0-业务逻辑
数据库·redis·缓存
自不量力的A同学1 小时前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存
Exquisite.1 小时前
Mysql
数据库·mysql
全栈前端老曹1 小时前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集
R1nG8631 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
阿钱真强道2 小时前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议