【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。
相关文章:

【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)
目录 一、MongoDB数据库原理 二、MongoDB数据库和集合基本操作(增删改查) 三、MongoDB数据库的文档基本操作(增删改) 四、学习笔记 往期文章:【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客 一、MongoDB数据…...

Dart 学习笔记(一)
一、数据类型 数值类型 int:表示整数类型,例如:int num 10;。在 Dart 中,int 类型是有范围限制的,具体取决于平台,但通常在 -2^63 到 2^63 - 1 之间。double:表示双精度浮点数类型,…...

安防视频监控平台Liveweb视频汇聚管理系统管理方案
智慧安防监控Liveweb视频管理平台能在复杂的网络环境中,将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚Liveweb平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…...

十八(GIT)、GIT基本命令、axios别名方法、黑马就业数据平台(axios基地址、轻提示函数、注册及登录功能)
1. GIT 1.1 Git配置用户信息 1. Git配置用户信息 git config --global user.name "用户名" git config --global user.email 邮箱地址 2. 查看配置 git config --list (信息太多使用 输入 q 退出) 1.2 本地初始化Git仓库 1. 通常有两种获取Git仓库的方式: 将 尚未进…...

Linux查看系统基本信息
执行命令 chmod x system_info.sh && ./system_info.sh文件名:system_info.sh #!/bin/bash# 获取系统版本 SYSTEM_VERSION$(cat /etc/os-release | grep ^PRETTY_NAME | cut -d -f 2 | xargs)# 获取CPU数量 CPU_COUNT$(grep -c ^processor /proc/cpuinfo…...

Word处理表格的一些宏
目录 1、表格首行居中2、表格内容靠左上下居中(排除首行) 1、表格首行居中 说明: 遇到错误将进行捕获,然后继续处理下一个表格 宏: Sub 表格首行居中()Dim tbl As tableOn Error Resume Next 错误时继续执行下一个…...

将本地项目文件推送到Git仓库中
一、在GitLab中创建新项目 1. 创建新项目 2. 打开本地文件. 3. 项目git文件操作 初始化本地Git仓库 git init关联远程仓库 git remote add origin 远程仓库地址将文件到Git暂存区 git add .提交项目文件到Git本地仓库 git commit -m "提交内容说明"将本地…...

2024-12-05OpenCV高级-滤波与增强
OpenCV高级-滤波与增强 文章目录 OpenCV高级-滤波与增强1-OpenCV平滑滤波1. 均值滤波 (cv2.blur())2. 高斯滤波 (cv2.GaussianBlur())3. 中值滤波 (cv2.medianBlur())4. 双边滤波 (cv2.bilateralFilter())总结 2-OpenCV边缘检测1. Sobel算子 (cv2.Sobel())2. Canny边缘检测 (cv…...

vue3中 axios 发送请求 刷新token 封装axios
service.js 页面 import axios from axios // 创建axios实例 const instance axios.create({baseURL: http://gcm-test.jhzhkj.cn:8600/h5card/,timeout: 5000, // 请求超时时间headers: {get: {Content-Type: application/x-www-form-urlencoded},post: {Content-Type: appl…...

aardio - 汉字笔顺处理 - json转sqlite转png
本代码需要最新版 godking.conn 库,请自行下载! 如果没有安装 odbc for sqlite 驱动,可以使用 godking.conn.driver.sqlite3.install() 安装。 也可以在此下载自行安装:http://www.chengxu.online/show.asp?softid267 1、将js…...

数据结构学习笔记 双向链表
……接上文 6. 双向链表 6.1 特性 逻辑结构:线性结构 存储结构:链式结构 操作:增删改查 建立双向链表结构体: //双向链表的节点定义 typedef int datatype;typedef struct node_t{datatype data;//数据域 struct node_t *next;//…...

深度学习作业十 BPTT
目录 习题6-1P 推导RNN反向传播算法BPTT. 习题6-2 推导公式(6.40)和公式(6.41)中的梯度. 习题6-3 当使用公式(6.50)作为循环神经网络的状态更新公式时, 分析其可能存在梯度爆炸的原因并给出解决方法. 习题6-2P 设计简单RNN模型࿰…...

html+css+JavaScript实现轮播图
html+css+JavaScript实现轮播图 实现思路 要实现一个轮播图功能,我们需要HTML来构建结构,CSS来设计样式,以及JavaScript来添加交互功能。下面我将分别分析这三个部分是如何协同工作来实现轮播图的。 HTML - 结构 HTML部分定义了轮播图的基本结构,包括图片列表、指示器和…...

Python+onlyoffice 实现在线word编辑
onlyoffice部署 version: "3" services:onlyoffice:image: onlyoffice/documentserver:7.5.1container_name: onlyofficerestart: alwaysenvironment:- JWT_ENABLEDfalse#- USE_UNAUTHORIZED_STORAGEtrue#- ONLYOFFICE_HTTPS_HSTS_ENABLEDfalseports:- "8080:8…...

PostgreSQLt二进制安装-contos7
1、安装依赖 yum install -y gcc readline readline-devel zlib-devel net-tools perl wget numactl libicu-devel bison flex openssl-devel pam pam-devel libxml2 libxml2-devel libxslt libxslt-devel openldap openldap-devel 2、创建目录 mkdir -p /data/postgresql/{…...

Neo4j启动时指定JDK版本
项目使用jdk1.8,同时需要安装neo4j5.15版本,使用jdk17. 1.mac或者liunx,找到neo4j目录bin的下neo4j文件 设置JAVA_HOME: 2.windows,找到bin下面的neo4j.bat文件 set "JAVA_HOME{JDK文件目录}" 重启后生效。...

kanzi3.6.10 窗口插件-美化绑定内容
文章目录 1. 创建kanzi窗口插件2. 业务逻辑3. 关键代码3.1 获取绑定信息3.2 解析绑定3.3 动态生成富文本控件 4. 安装 背景:kanzi的节点绑定信息是黑色的,看起来非常费劲,如果能代码高亮显示,对开发会很有帮助。 美化前 美化后 …...

利用tablesaw库简化表格数据分析
tableaw是处理表格数据的优秀工具。它提供了一组强大而灵活的功能,使操作、分析和可视化数据表变得容易。在这篇博文中,我们将介绍tableaw的主要特性、如何使用这些特性,以及如何使用tableaw处理表格数据的一些示例。 tablesaw简介 tableaw…...

记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009
项目是个老项目,依赖包也比较大,咱就按正常流程走一遍来详细解决这个问题,先看一下node版本,我用的是nvm管理的,详细可以看我的其他文章 友情提醒:如果项目比较老,包又大,又有一些需…...

【JavaWeb后端学习笔记】MySQL的数据查询语言(Data Query Language,DQL)
MySQL DQL 1、DQL语法与数据准备1.1 DQL语法1.2 数据准备 2、基础查询2.1 查询指定字段2.2 查询返回所有字段2.3 给查询结果起别名2.4 去除重复记录 3、条件查询3.1 条件查询语法3.2 条件查询案例分析 4、分组查询4.1 分组查询语法4.2 分组查询案例分析 5、排序查询5.1 排序查询…...

360 最新Android面试题及参考答案
一个 activity 只能有一个进程么【对进程的理解】 在 Android 中,一个 Activity 并不只能有一个进程。进程是操作系统进行资源分配和调度的一个独立单位。 从原理上来说,Android 系统允许开发者通过在 AndroidManifest.xml 文件中的<activity>标签设置 android:process…...

《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)
文章目录 1. 最近最久未使用算法的工作原理2. 最近最久未使用算法示例3.LRU算法实现3.1 LRU的页面链表实现3.2 LRU的活动页面栈实现3.3 链表实现 VS 堆栈实现 1. 最近最久未使用算法的工作原理 最近最久未使用页面置换算法,简称 LRU, 算法思路ÿ…...

ES6新增了哪些特性(待更新)
1.let,const 1.1.var,let,const的区别 1.1.1 var存在变量提升,let和const不存在。 1.1.2 let和const只能在块作用域里访问。 1.1.3 同一作用域下let和const不能声明同名变量,而var可以。 1.1.4 const定义常量&am…...

剖析一下自己的简历第二条
剖析一下自己的简历第二条 背景前置说明可能会被问到的问题 背景 剖析一下自己简历, 增加对一些专业知识的掌握. 我的简历第二条是这样写的: “2. 熟悉JVM、JMM,包括内存模型,垃圾回收机制,了解其基本调优技巧并具备线上调优经验。”. 前置…...

威联通-001 手机相册备份
文章目录 前言1.Qfile Pro2.Qsync Pro总结 前言 威联通有两种数据备份手段:1.Qfile Pro和2.Qsync Pro,实践使用中存在一些区别,针对不同备份环境选择是不同。 1.Qfile Pro 用来备份制定目录内容的。 2.Qsync Pro 主要用来查看和操作文…...

性能测试基础知识jmeter使用
博客主页:花果山~程序猿-CSDN博客 文章分栏:测试_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 性能指标 1. 并发数 (Con…...

Ceph文件存储
Ceph文件存储1.概念:数据以文件的形式存储在存储介质上,每个文件都有一个唯一的文件名并存储在一个目录结构中。提供方便的文件访问接口,支持多种文件操作,如创建、删除、读取、写入、复制等。用于存储和管理个人文件,如文档、图片…...

Hive分区表新增字段并指定位置
Hive分区表新增字段并指定位置 1、Hive分区表新增字段2、CASCADE关键字3、历史分区新增列为NULL问题 1、Hive分区表新增字段 Hive分区表新增字段并指定位置主要分为两步:新增字段和移动字段 1)新增字段 ALTER TABLE table_name ADD COLUMNS (col_name …...

关系型数据库(RDBMS)与非关系型数据库(NoSQL)应用场景
关系型数据库适用于事务性、强一致性和结构化数据场景;非关系型数据库则在高并发、大数据、非结构化数据场景中表现更优;数据量和并发量增加时,应通过分库分表、缓存、集群扩展等手段进行优化。 1. 在什么样的业务场景下,你会优先…...

浅谈CI持续集成
1.什么是持续集成 持续集成(Continuous Integration)(CI)是一种软件开发实践,团队成员频繁地将他们的工作成果集成到一起(通常每人每天至少提交一次,这样每天就会有多次集成),并且在每次提交后…...