【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)

目录

一、MongoDB数据库原理

二、MongoDB数据库和集合基本操作(增删改查)

三、MongoDB数据库的文档基本操作(增删改)

四、学习笔记


往期文章:【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客

一、MongoDB数据库原理

MongoDB层次(从小到大):键值对---文档---集合---数据库

MongoDB是一个开源文档数据库,提供高性能,高可用性和自动扩展,旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB中的记录是一个文档,它是由字段和值(key=>value)对组成的数据结构。 MongoDB文档与JSON对象相似。 字段的值可能包括其他文档,数组和文档数组。

在MongoDB中基本的概念是文档(document)、集合(collection)、数据库(database)。

|-----------------------------|---------------------------------|-------------------------|
| SQL 术语 / 概念 | MongoDB 术语 / 概念 | 解释 / 说明 |
| database | database | 数据库 |
| table | collection | 数据库表/集合 |
| row | document | 数据记录行/文档 |
| column | Field | 数据字段/域 |
| index | Index | 索引 |
| table joins | | 表连接,MongoDB不支持 |
| primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |

二、MongoDB数据库和集合基本操作(增删改查)

1、启动mongodb,并进入命令行,如下图所示

2、MongoDB创建数据库

(1)使用/创建数据库Employee,命令use Employee

(2)显示所有数据库,命令show dbs

(3)向Employee插入数据,命令

db.Employee.insert({"name":"google"})

3、MongoDB删除数据库

删除数据库Employee,需要进入该数据库,命令db.dropDatabase()

4、集合操作

(1)创建集合

在myDB数据库里创建集合myCollection,命令

db.createCollection("myCollection")

(2)查询集合

在数据库myDB里查询所有集合,命令show collections

(3)对集合重命名

将集合myCollection重命名mycoll,命令

db.myCollrction.renameCollection("mycoll")

(4)删除集合,命令db.mycoll.drop()

重复练习,在数据库myDB里创建集合AAA并把其重命名为aaa,再删除集合aaa,如下图所示:

三、MongoDB数据库的文档基本操作(增删改)

1、先使用MongoDB数据库Employee

创建集合AAA

2、向集合AAA中插入表格所示的文档数据,使用db.AAA.insert()

|--------|-------|-------|-------|
| _id | Count | Test2 | Test5 |
| "自动生成" | 1 | Flase | True |
| "自动生成" | 2 | Flase | True |
| "自动生成" | 3 | Flase | True |
| "自动生成" | 4 | Flase | True |
| "自动生成" | 5 | Flase | True |
| "自动生成" | 6 | Flase | True |
| "自动生成" | 7 | Flase | True |
| "自动生成" | 8 | Flase | True |
| "自动生成" | 9 | Flase | True |

如下所示:

用db.AAA.find()查询集合AAA里的所有文档数据

3、将Count值大于1的第一条记录中Test2更新为OK,即修改Count值为2的记录,使用db.AAA.update(),如下所示:

db.AAA.update({Count: {gt:1}},{set: {Test2: "OK"}})

查看更新情况,显示Count值为2的Test2内容已更新为OK。

4、将Count值大于2的所有记录中Test2全部更新为OK。

这里需要添加一个multi参数,设置为true表示update操作会更新所有符合条件的记录,设置为false表示只更新第一条符合条件的记录。这里要全部更新,设置为true,如下所示:

db.AAA.update({Count:{gt:2}},{set: {Test2: "OK"}},{multi:true})

可以看到,Count值为3~9的记录中Test2内容更新为OK。

5、将Count值大于3的第一记录中Test5用添加方式(通过配置upsert)更新为OK。

这里使用到upsert参数,设置为true,表示如果没有找到符合条件的记录,就插入一个新记录,设置为false,表示如果没有找到符合条件的记录,不会执行插入新记录。本题已经有Count值大于3的记录,所以upsert设置成什么值暂时不会影响数据的添加。因为是只更新符合条件的第一条记录,所以multi值为false,如下所示:

db.AAA.update({Count:{gt:3}},{set:{Test5:"OK"}},{upsert:true,multi:false})

可以看到,Count值为4的记录中Test5内容更新为OK。

6、将Count值大于4的所有记录中Test5用添加方式更新为OK。

更新所有符合条件的记录,只需要将上题的语句中multi值改为true即可,如下所示:

db.AAA.update({Count:{gt:4}},{set:{Test5:"OK"}},{upsert:true,multi:true})

可以看到,Count值为5~9的记录中Test5内容更新为OK。

7、采用更新的方式,将Count值大于5的所有记录中Count值全部增加1。

$inc是递增操作符,用于实现对Count字段值增加1的操作,这里更新所有记录mutli值为true,如下所示:

db.AAA.update({Count: {gt:5}},{inc: {Count:1}},{multi:true})

可以看到,Count值为6~9的记录的Count值都加了1。

8、采用更新的方式,将Count值大于10的第一个记录中Count值增加2。

由于目前集合里没有Count值大于10的记录,所以执行更新语句显示没有找到符合条件的文档,都是0,如下所示

db.AAA.update({Count: {gt:10}},{inc: {Count:2}},{multi:false})

因此先添加一条Count为11的记录,再进行更新语句,如下所示:

db.AAA.insert({Count:11,Test2:'OK',Test5:'OK'})

可以看到,Count为11的记录的Count值已经变成了13。

9、删除集合AAA下的所有文档,使用db.AAA.remove({}),如下所示:

四、学习笔记

插入文档使用db.collection.insert()来实现,如果不指定_id的值,则MongoDB会自动生成一串字符来表示_id。更新文档使用db.collection.update()来实现,其中有两个可选参数,一个是multi,一个是upsret。multi参数设置为true,表示update操作会更新所有符合条件的记录,设置为false表示只更新第一条符合条件的记录。upsert参数设置为true,表示如果没有找到符合条件的记录,就插入一个新记录,设置为false,表示如果没有找到符合条件的记录也不会执行插入新记录。

删除文档使用db.collection.delete Many({})或db.col.remove({}),删除指定文档使用db.collection.deleteOne。

相关推荐
清风6666662 小时前
基于单片机的水塔液位检测与智能调节报警系统设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
gplitems1232 小时前
Technox – IT Solutions & Services WordPress Theme: A Practical
linux·服务器·数据库
不剪发的Tony老师3 小时前
MySQL 9.5创新版发布,有哪些新功能?
数据库·mysql
布朗克1683 小时前
MySQL 及 SQL 注入详细说明
数据库·sql·mysql·1024程序员节
武子康4 小时前
Java-154 深入浅出 MongoDB 用Java访问 MongoDB 数据库 从环境搭建到CRUD完整示例
java·数据库·分布式·sql·mongodb·性能优化·nosql
Austindatabases5 小时前
DBA 从“修电脑的” 到 上演一套 “数据治理” 大戏 --- 维护DBA生存空间,体现个体价值
数据库·dba
LB21125 小时前
Redis黑马点评 day01
数据库·redis·缓存
白小筠5 小时前
创建Django项目
数据库·django·sqlite
扑克中的黑桃A6 小时前
金仓多模数据库平替MongoDB的电子证照国产化实践——从2TB数据迁移到1600+并发支撑
数据库
计算机毕业设计小帅6 小时前
【2026计算机毕业设计】基于Django的社区婴幼儿预防接种系统
数据库·django·课程设计