MongoDB实验——在MongoDB中管理数据库和集合操作

news2024/10/7 16:27:04

实验——在MongoDB中管理数据库和集合操作

一、实验目的

  1. 掌握在 MongoDB 中管理数据库和集合操作
  2. 掌握在 MongoDB 中插入、修改及删除文档操作

二、实验原理

MongoDB 中数据被分组存储在数据集中,被称为一个集合(Collenction)。对于存储在MongoDB 数据库中的文件,用户不需要知道它的任何结构定义。在存储数据时是以键—值对的集合:键是字符串,值可以是数据类型集合里的任意类型,包括数组和文档。
MongoDB 集合类似于关系数据库中的表。先认识一下 MongoDB 结构。
在这里插入图片描述
使用修改器来完成局部更新操作,更新运算符见下表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、实验内容

  1. 在 MongoDB shell 中管理数据库和集合
  2. 操作集合中的 MongoDB 文档

四、实验步骤

1.启动 MongoDB 数据库
2.启动 MongoDB Shell 客户端
以上基本操作演示图略。
3.建库、建集合操作
在这里插入图片描述
4.添加文档
4.1添加一个新的文档到集合
语法格式:db.collection.insert()
4.2同时添加多个文档,可以传入数组
在这里插入图片描述
4.3添加文档再包含文档的(层级三级)
在这里插入图片描述
5.删除列表中的数据
5.1.删除列表中所有数据
语法格式:db.[documentName].remove()
在这里插入图片描述

5.2 根据条件删除
在这里插入图片描述
5.3删除数据库操作
在这里插入图片描述
6.数据更新命令
Mongodb 更新有两个命令:update、save。
6.1 update 命令
update 命令格式:db.collection.update(criteria,objNew,upsert,multi)
参数说明:
 criteria:查询条件
 objNew:update 对象和一些更新操作符
 upsert:如果不存在 update 的记录,是否插入 objNew 这个新的文档,true 为插入,默认为 false,不插入。
 multi:默认是 false,只更新找到的第一条记录。如果为 true,把按条件查询出来的记录全部更新
代码示例:
在这里插入图片描述
示例1:把 count 大于等于 20 的 class name 修改为 c3
在这里插入图片描述
由于没有指定 upsert 和 multi 的值,所以全部默认为 false,由结果可以看出,只修改了第一条符合条件的记录。
示例 2:把 count 大于 等于20 的 class name 修改为 c4,设置 multi 为 true
在这里插入图片描述
由于指定了 multi 为 true,所以对两条符合条件的记录都进行了更新。
示例 3: 把 count 大于 50 的 class name 修改为 c5,设置 upsert 为 true
在这里插入图片描述
在集合中没有 count 大于 50 的记录,但是由于指定了 upsert 为 true,如果找不到则会插入一条新记录。
6.2. save 命令
Mongodb 另一个更新命令是 save,格式如下:
db.collection.save(obj)
obj 代表需要更新的对象,如果集合内部已经存在一个和 obj 相同的“_id”的记录,Mongodb 会把 obj 对象替换集合内已存在的记录,如果不存在,则会插入 obj 对象。
6.3. 数据更新操作符
1.$ inc
用法:{$inc:{field:value}}
作用:对一个数字字段的某个 field 增加 value
示例:将 name 为 kanglei 的学生的 age 增加 5
在这里插入图片描述
2. $ set
用法:{ $ set:{field:value}}
作用:把文档中某个字段 field 的值设为 value
示例: 把 kanglei 的年龄设为 23 岁
在这里插入图片描述
从结果可以看到,更新后年龄从 27 变成了 23
3. $ unset
用法:{ $ unset:{field:1}}
作用:删除某个字段 field
示例: 将 kanglei 的年龄字段删除
在这里插入图片描述
4. $ push
用法:{ $ push:{field:value}}
作用:把 value 追加到 field 里。注:field 只能是数组类型,如果 field 不存在,会自动插入一个数组类型
示例:给 kanglei 添加别名"michael"
在这里插入图片描述
5. $ pushAll

用法:{ $ pushAll:{field:value_array}}
作用:用法同 $ push 一样,只是 $ pushAll 可以一次追加多个值到一个数组字段内。
示例:给kanglei 追加别名 A1,A2
在这里插入图片描述
这里报错,因为pushAll在mongo的3.6之前时可用的,之后的版本不可用
6. $ addToSet
用法:{ $ addToSet:{field:value}}
作用:加一个值到数组内,而且只有当这个值在数组中不存在时才增加。
示例:往 kanglei 的别名字段里添加两个别名 A3、A4
在这里插入图片描述
由结果可以看出,更新后 ailas 字段里多了一个对象,这个对象里包含 2 个数据,分别是 A3、A4。
7. $ pop
用法:删除数组内第一个值:{ $ pop:{field:-1}}、删除数组内最后一个值:{ $ pop:{field:1}}
作用:用于删除数组内的一个值
示例: 删除 chenzhou 记录中 alias 字段中第一个别名
在这里插入图片描述
由结果可以看出,第一个别名 Michael 已经被删除了。
再使用命令删除最后一个别名:
在这里插入图片描述
由结果可以看出,alias 字段中最后一个别名[“A3”,“A4”]被删除了。

8.$ pull
用法:{ $ pull:{field:_value}}
作用:从数组 field 内删除一个等于_value 的值
示例:删除 chenzhou 记录中的别名 A1
在这里插入图片描述
9.$ pullAll
用法:{$ pullAll:value_array}
作用:用法同$pull 一样,可以一次性删除数组内的多个值。
示例: 删除 chenzhou 记录内的所有别名
在这里插入图片描述
可以看到 A1 和 A2 已经全部被删除了。
10. $ rename
用法:{ $rename:{old_field_name:new_field_name}}
作用:对字段进行重命名
示例:把 chenzhou 记录的 name 字段重命名为 sname
在这里插入图片描述
由结果可以看出 name 字段已经被更新为 sname 了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1351853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴,求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失,应用无法启动的问题”,不知道应该怎么修复? 首先,先来了解“KBDPL.DLL文件”是什么? kbdpl.dll是Windows操作系统的一部分,是一个动…

深度学习MLP_实战演练使用感知机用于感情识别_keras

目录 (1)why deep learning is game changing?(2)it all started with a neuron(3)Perceptron(4)Perceptron for Binary Classification(5)put it all toget…

《论文阅读》基于情绪-原因转换图的共情回复生成

《论文阅读》基于情绪-原因转换图的共情回复生成 前言摘要模型架构图构建回复概念预测回复生成前言 今天为大家带来的是《EMPATHETIC RESPONSE GENERATION VIA EMOTION CAUSE TRANSITION GRAPH》 出版: 时间:2023.2.23 类型:共情对话生成 关键词:图网络;共情回复;情绪…

Maven 整理(含面试题)

Maven是Java 项目必备,Maven 主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。项目构建工具 、更好的管理依赖 目录 Maven安装与运行maven 重要知识点面试题 Maven安装与运行 Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理…

石头剪刀布游戏 - 华为OD统一考试

OD统一考试 分值: 100分 题解: Java / Python / C 题目描述 石头剪刀布游戏有 3 种出拳形状: 石头、剪刀、布。分别用字母 A,B,C 表示游戏规则: 出拳形状之间的胜负规则如下: A>B; B>C; C>A; 左边一个字母,…

Opencv(C++)学习之cv::calcHist 任意bin数量进行直方图计算

**背景:**当前网上常见的直方图使用方法都是默认使用256的范围,而对于使用特定范围的直方图方法讲的不够清楚。仔细研究后总结如下: 1、常见使用方法,直接对灰度图按256个Bin进行计算。 Mat mHistUn; int channels[1] { 0 }; {…

Django(五)

员工管理系统 1.新建项目 2.创建app python manage.py startapp app012.1 注册app 3. 设计表结构(django) from django.db import modelsclass Department(models.Model):""" 部门表 """title models.CharField(verbos…

Mysql 动态链接库配置步骤+ 完成封装init和close接口

1、创建新项目 动态链接库dll 2、将附带的文件都删除,创建LXMysql.cpp 3、项目设置 3.1、预编译头,不使用预编译头 3.2、添加头文件 3.3、添加类 3.4、写初始化函数 4、项目配置 4.1、右键解决方案-属性-常规-输出目录 ..\..\bin 4.2、生成lib文件 右…

【LeetCode-剑指offer】--15.找到字符串中所有字母异位词

15.找到字符串中所有字母异位词 方法&#xff1a;滑动窗口 class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> ans new ArrayList<>();int m s.length(),n p.length();if(n > m){return ans;}int[] cnt1 new i…

部署上传漏洞的靶场环境upload-labs

1、工具介绍 upload-labs是一个使用php语言编写的&#xff0c;专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关&#xff0c;每一关都包含着不同上传方式。 upload-labs靶场开源地址&#xff1a;&#xff1a;https://…

Android14之audit2allow自动生成Selinux规则(一百七十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

k8s的声明式资源管理

在k8s当中支持两种声明资源的方式&#xff1a; 1、 yaml格式&#xff1a;主要用于和管理资源对象 2、 json格式&#xff1a;主要用于在API接口之间进行消息传递 声明式管理方法(yaml)文件 1、 适合对资源的修改操作 2、 声明式管理依赖于yaml文件&#xff0c;所有的内容都…

使用GPTs+Actions自动获取第三方数据

目录 安装插件与GPT对话联网插件首先,创建GPTs。 Voxscript 官网:https://voxscript.awt.icu/index.htmlOpenAI Schema:https://voxscript.awt.icu/swagger/v1/swagger.yamlServer URL: servers: url: https://voxscript.awt.icu安装插件 要使用这个插件&

【Linux】set命令使用

set命令 设置所使用shell的执行方式&#xff0c;可依照不同的需求来做设置。 语法 set [参数]选项及作用 执行令 &#xff1a; man set 执行命令结果 参数 -a  标示已修改的变量&#xff0c;以供输出至环境变量。-b  使被中止的后台程序立刻回报执行状态。-C  转向所…

draw流程图工具导入云原生(CNCF)相关控件

目录 1、通过draw导入xml文件&#xff0c;获取云原生相关的空间 2、引用自己的资源链接&#xff1a; 1、通过draw导入xml文件&#xff0c;获取云原生相关的空间 导入资源图库&#xff0c;资源放在下方&#xff0c;大家可以下载&#xff1a; 2、引用自己的资源链接&#xff1a;…

全面PDF分析:创建PDF解析API,可商业用

为什么我要自己制作这个接口?需求如下: 我需要对PDF内容进行深入分析。无论是总结PDF内容,还是基于PDF内容提出问题,首先我都需要提取出文本信息。经过市场调查,我发现缺乏可靠的PDF解析API服务。即便是付费服务,也没有发现特别合适的产品,大多数都是现成的网站工具。文…

【LabVIEW FPGA入门】创建第一个LabVIEW FPGA程序

本教程仅以compactRIO&#xff08;FPGA-RT&#xff09;举例 1.系统配置 1.1软件安装 FPGA-RT 1. LabVIEW Development System (Full or Professional) 2. LabVIEW Real-Time Module 3. LabVIEW FPGA Module 4. NI-RIO drivers 1.2硬件配置 1.使用线缆连接CompactRIO至主机…

vue3(十三)-基础入门之路由配置与重定向

一、一级路由与重定向 1、创建 App.vue 在父组件中导入子组件 Navbar <template><div><navbar></navbar></div> </template><style lang"scss"></style><script> import navbar from /components/Navbarex…

[GKCTF 2020]cve版签到

[GKCTF 2020]cve版签到 wp 信息搜集 题目页面&#xff1a; 页面中有提示&#xff1a;You just view *.ctfhub.com 点一下 View CTFHub 会回弹一些信息&#xff1a; 抓包看看&#xff1a; url 传参&#xff0c;判断是 ssrf 。但是当我将其改为 http://www.baidu.com 或者是…

2024年PMP考试新考纲-【人员领域】真题解析

1前面的文章中&#xff0c;华研荟从PMBOK第七版介绍了里面的各个章节最新考纲下的PMP考试真题&#xff0c;并做了详细的解析。 从今天起&#xff0c;我们从另一个角度来看一下PMP的最新考试真题&#xff1a;从新考纲下的三个领域来看。 事实上&#xff0c;PMI官方于2019年6月…