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

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

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

相关文章:

  • Dart 学习笔记(一)
  • 安防视频监控平台Liveweb视频汇聚管理系统管理方案
  • 十八(GIT)、GIT基本命令、axios别名方法、黑马就业数据平台(axios基地址、轻提示函数、注册及登录功能)
  • Linux查看系统基本信息
  • Word处理表格的一些宏
  • 将本地项目文件推送到Git仓库中
  • 2024-12-05OpenCV高级-滤波与增强
  • vue3中 axios 发送请求 刷新token 封装axios
  • aardio - 汉字笔顺处理 - json转sqlite转png
  • 数据结构学习笔记 双向链表
  • 深度学习作业十 BPTT
  • html+css+JavaScript实现轮播图
  • Python+onlyoffice 实现在线word编辑
  • PostgreSQLt二进制安装-contos7
  • Neo4j启动时指定JDK版本
  • kanzi3.6.10 窗口插件-美化绑定内容
  • 利用tablesaw库简化表格数据分析
  • 记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009
  • 【JavaWeb后端学习笔记】MySQL的数据查询语言(Data Query Language,DQL)
  • 360 最新Android面试题及参考答案
  • 《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)
  • ES6新增了哪些特性(待更新)
  • 剖析一下自己的简历第二条
  • 威联通-001 手机相册备份
  • 性能测试基础知识jmeter使用
  • Ceph文件存储
  • Hive分区表新增字段并指定位置
  • 关系型数据库(RDBMS)与非关系型数据库(NoSQL)应用场景
  • 浅谈CI持续集成
  • 华为新手机和支付宝碰一下 带来更便捷支付体验