【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。

相关推荐
wgzrmlrm746 分钟前
如何加固SQL环境部署_删除默认安装的示例数据库
jvm·数据库·python
雨墨✘1 小时前
golang如何实现设备指纹识别_golang设备指纹识别实现详解
jvm·数据库·python
程序员大辉1 小时前
没想到!一直要开会员的Navicat 终于有免费版了
数据库
数厘1 小时前
2.15 sql基础查询(SELECT、FROM、字段别名、常量与表达式)
数据库·sql·oracle
可观测性用观测云1 小时前
观测云数据转发和存档最佳实践
数据库
披着羊皮不是狼2 小时前
(7)为 RAG 系统接入 Redis Stack 实现向量持久化
数据库·redis·缓存
SelectDB2 小时前
基于 SelectDB 实现 Hive 数据湖统一分析:洋钱罐全球一体化探索分析平台升级实践
大数据·数据库·数据分析
飞yu流星2 小时前
mysql 基础
数据库·mysql·oracle
零陵上将军_xdr2 小时前
MySQL 事务写入流程详解
android·数据库·mysql
若阳安好3 小时前
【提效小工具】IN SQL、UPDATE SQL、INSERT SQL
java·数据库·sql