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

MongoDB实验——MongoDB shell操作

MongoDB shell操作

实验原理

MongoDB shell是一个可执行文件,是MongoDB自带的一个交互式JavaScript shell,位于MongoDB安装路径下的/bin文件夹中。要启动MongoDB shell,可执行命令mongo。这将在控制台提示符中启动该shell,MongoDB shell提供了多个命令,下面列出了多个MongoDB shell命令及其用途。

image-20221014215526918

一、MongoDB shell脚本编程

1.使用命令行编程–eval执行JavaScript表达式

​ 参数–eval 接受一个 JavaScript 字符串或 JavaScript 文件,下面的命令启动 MongoDB shell 端,连接到数据库 test,对该数据库执行 db.getCollectionNames(),并以 JSON 字符串的方式输出结果。

步骤:

1)在 test 数据库中新建集合 student,并添加文档。命令如下:

MongoDB shell 端操作

>use test

>db.student.insert({sno:”001”,sname:”zhangsan”})

>exit

2)在控制台输入:

> mongo test --eval “printjson(db.getCollectionNames())”

image-20221014225002936

2、在 MongoDB shell 中使用方法 load()来执行脚本

1)创建 shell_script.js 文件,该文件的路径为 D:\Junior Experiment\nosql\NoSQL guide book\test1document\shell_script.js 文件代码如下:

print("Hostname:");print("\t"+hostname());print("Date:");print("\t"+Date());db = connect("localhost/admin");print("Admin Collections:");printjson(db.getCollectionNames());

2)执行命令 mongo 文件地址+shell_script.js。命令运行结果如图所示。

image-20221015091614832

3、在命令 mongo 中指定要执行的 JavaScript 文件

​ MongoDB shell 加 载 并 执 行 脚 本 文 件 generate_words.js。 假设该文件的路径为

D:\JuniorExperiment\nosql\NoSQLguidebook\test1document\generate_words.js。

1)在 MongoDB shell 端输入 load(“D:\JuniorExperiment\nosql\NoSQLguidebook\test1document\generate_words.js”)(因此地址太长,我换了个文件路径)

image-20221015093917124

2)输入命令 show dbs,可以看到生成自定义数据库 words。

3)输入命令 use words,切换到 words 数据库。

4)输入命令 show collections,查看 words 数据库所包含的集合名称。命令执行结果如图所示。

image-20221015094104309

5)输入命令 db.word_stats.find().pretty(),查看 word_stats 集合中的所有文档。 命令执行结果如图所示。

image-20221015094351269

二、MongoDB shell操作

实验内容

练习在MongoDB中创建集合、删除集合、插入数据、更新数据、删除数据、查询数据等。

实验步骤

1.启动MongoDB shell。

image-20221014220036475

2.切换到admin数据库,使用root账户

image-20221014220420094

给admin账户授权,出现连接失败Error: Authentication failed.。导致robomongo无法连接

解决方法是手动添加admin账户,创建成功后,再次db.auth(‘root’,‘strongs’),返回1

image-20221015101018782

3.查看当前数据库状态

image-20221015101129224

4.显示当前MongoDB版本

image-20221015101221215

5.查询本地所有数据库名称

image-20221015101438210

6.切换至mydb数据库,如果该数据库不存在,则会在插入第一条数据后创建该数据库。

image-20221015102105065

7.创建集合(集合相当于关系数据库的table)

image-20221015102213620

8.查询当前库下的所有集合(collection)

image-20221015102255718

9.查询当前库下的所有集合(collection)

image-20221015102336376

10.向集合mycollection中插入数据。(如果集合不存在,在插入数据时,MongDB会自动创建集合)

image-20221015103133623

11.添加数据使用insert方法,如果添加文档也可以使用先声明对象再添加,例如:

image-20221015104901354

image-20221015104941859

12.MongoDB会为每个插入的对象自动生成一个“_id”的值,在插入的时候也可以自己指定这个值,例如:

image-20221015105338678

13.查询集合mycollection中的数据

image-20221015105437434

MongoDB提供两种更新操作:update()和save()

①update()更新操作至少需要两个参数,它的语法为:db.collection.update( criteria, objNew, upsert, multi )

criteria:update的查询条件,类似sql update查询内where后面的值。

objNew:update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set 后面的值。

upsert:如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi:MongoDB默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

14.根据username修改salary,将username为’zhangyu’的数据,salary提升至600

image-20221015114835280

15.将username为‘wangkaiyue’的数据age字段数值增加1

image-20221015124059839

②save()的语法为:db.collection.save( x ),x就是要更新的对象,只能是单条记录。也可以用 Save执行插入操作,如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值,执行更新操作。

16.更新_id为10000001的数据。

image-20221015125728327

17.再次查询mycollection集合,验证以上更新操作

image-20221015125819692

18.删除username为‘yuhaowen’的数据。

image-20221015130006073

19.删除集合mycollection中全部数据

image-20221015130048687

删除语法如下:

db.mycollection.remove(<query>,{justOne:<boolean>,writeConcern:<document>})

参数说明:

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档。默认false

writeConcern :(可选)抛出异常的级别。

20.重命名集合,mycollection改为mcollection

image-20221015130404807

21.删除集合mcollection

image-20221015130436672

22.删除当前数据库

image-20221015130511350

至此该实验shell操作结束!

三、MongDB 查询

实验内容

1.使用find或者findOne函数和查询文档

2.MongoDB 条件查询

3.MongoDB AND和OR查询

4.MongoDB $type 操作符

5.MongoDB 正则表达式

实验步骤

1.启动MongoDB shell

image-20221015131312431

2.切换到admin数据库,使用root账户

image-20221015131412422

3.插入实验数据

image-20221015132243437

4.统计集合中数据条数

image-20221015132318293

5.MongoDB中使用find来进行查询,查询就是返回一个集合中的子集,子集的范围从0到整个集

合。find的第一个参数决定了要返回哪些子集,其形式也是一个集合。

空的文档查询会匹配集合的全部内容,要是不指定查询文档,默认就是{}。

6.查询第一条数据

image-20221015132655681

注意,findOne中的O要大写

7.查询第1条以后的所有数据

image-20221015132825319

8.跳过第2条,查询后两条数据

image-20221015132938356

这条命令可用于分页,Limit是pageSize,Skip是第几页*pageSize

9.限定查询3条数据

image-20221015133127181

10.查询结果集的记录数。(查询salary小于300或大于400的个数)

image-20221015133414286

查询指定列的数据。可以通过find(或者findOne)的第二个参数来指定想要的键,这样做既会节

省传输的数据量,又能节省客户端解码文档的时间和内存消耗。

11.查询mycollection集合中,‘age’列和’salary‘列

1表示显示此列的意思,也可以用true表示

image-20221015155018086

12.按salary升序排序。(将1换成-1就是降序排序)

image-20221015155228573

13.查询username列,并去掉重复数据

image-20221015155326194

MongoDB与RDBMS中Where语句的比较:

image-20221015155403664

14.查询age小于13的数据

image-20221015155531962

15.查询age等于13的数据

image-20221015155632315

16.查询age大于15的数据

image-20221015155943311

17.查询不等于13的数据

image-20221015160111029

MongoDB AND条件

MongoDB 的find() 方法可以传入多个键(key),每个键(key)以逗号隔开。语法格式如下:

db.col.find({key1:value1,key2:value2})

18.查询age等于20,salary等于200的数据

image-20221015160414164

19.查询age小于13,salary大于等于200的数据。

image-20221015160734557

MongoDB OR条件

MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

db.col.find({$or:[{key1:value1},{key2:value2}]}
)

20.查询salary大于300或age小于等于13的数据。

image-20221015161023486

AND和OR联合使用

21.查询salary大于等于300时,username为’banma’或者age为8的数据,类似的常规 SQL 语句

为:where salary>=300 and (username = ‘banma’ or age = 8)

image-20221015161224548

MongoDB $type 操作符

$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。

MongoDB 中可以使用的类型如下表所示:

image-20221015161306407

22.获取mycollection集合中username为String类型的数据。

image-20221015161423623

MongoDB 正则表达式

正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

23.查询username中包含‘m’的数据。

image-20221015161538597

24.查询以z开头的数据

image-20221015161638283

相关文章:

MongoDB实验——MongoDB shell操作

MongoDB shell操作 实验原理 MongoDB shell是一个可执行文件&#xff0c;是MongoDB自带的一个交互式JavaScript shell&#xff0c;位于MongoDB安装路径下的/bin文件夹中。要启动MongoDB shell&#xff0c;可执行命令mongo。这将在控制台提示符中启动该shell&#xff0c;Mongo…...

数据分析师职业发展道路,工作内容是什么?

很多同学问&#xff0c;参加数据分析就业班后之的就业发展道路是怎样的&#xff0c;工作又能做什么呢&#xff1f; 市面上的常见的工作类型有有运营类、技术类及分析类等&#xff0c;可以根据自己的意愿去做适合自己的工作&#xff0c;但是任何工作其实都是需要一技之长。…...

Vue3 + ts的使用

一. IDE的配置 1. VSCode 插件安装搜索builtin typescript 2. 点击“TypeScript and JavaScript Language Features”右下角的小齿轮&#xff0c;然后选择“Disable (Workspace)” 3. 重新加载工作空间。Takeover 模式将会在你打开一个 Vue 或者 TS 文件时自动启用。 二. 依赖的…...

CF Edu152 C

Problem - C - Codeforces 题意&#xff1a; 思路&#xff1a; 首先&#xff0c;观察样例可知 这种是等效的 推广一下 0000.....111111 ..l..............r...... 这种是等效的 容易想到维护后面第一个1的位置和前面第一个0的位置&#xff0c;然后把所有区间都等效一下&…...

iBooker 技术评论 20230902

一、女子同时供职 16 家公司却从不上班&#xff0c;全国骗薪群体至少有七八百人&#xff0c;为何会出现此类骗薪群体&#xff1f; 社保其实很好绕过。就是这些骗薪者一起创立一个外包公司&#xff0c;然后通过这个公司把自己外包出去。这些人和外包公司签的是劳务合同&#xf…...

视频动态壁纸 Dynamic Wallpaper for Mac中文

Dynamic Wallpaper是一款Mac平台上的动态壁纸应用程序&#xff0c;它可以根据时间等因素动态切换壁纸&#xff0c;提供更加生动和多样化的桌面体验。 Dynamic Wallpaper包含了多个动态壁纸&#xff0c;用户可以根据自己的喜好选择和切换。这些动态壁纸可以根据时间等因素进行自…...

Java“牵手”京东商品列表数据,关键词搜索京东商品数据接口,京东API申请指南

京东商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取京东商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问京东商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…...

springboot实战(三)之多环境部署配置文件生效方式

环境&#xff1a; jdk&#xff1a;1.8 springboot版本&#xff1a;2.7.15 配置&#xff1a; 1.新建yml文件 在resources包中创建application-dev.yml、application-testing.yml两个yml文件 2.配置 在application.yml进行配置生效文件 3.注意事项 新建yml的名称必须以&qu…...

java透传参数至logback,自定义日志文件名。过期日志文件自动删除

LogFilter filter日志拦截&#xff0c;把不需要打印的日志信息拦截在外&#xff0c;只录入有key参数的&#xff08;filterReply FilterReply.ACCEPT;&#xff09;。 package com.***.***.filter;import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.IL…...

HFSS 3维曲线导入

HFSS 3维曲线导入 简介环境参考代码使用结果 简介 如图一所示&#xff0c;CST中可以通过导入和到出由任意点组成的曲线&#xff0c;但是HFSS中貌似不能导入&#xff08;如图二所示&#xff09;&#xff0c;如果我们要将matlab的产生的曲线的点的数据导入特变麻烦&#xff0c;特…...

【消息中心】kafka消费失败重试10次的问题

Kafka消费失败重试10次的问题通常可以通过配置Kafka消费者来调整。在Kafka中&#xff0c;可以通过设置max.poll.interval.ms、fetch.min.bytes、fetch.max.bytes、fetch.max.wait.ms等参数来控制消费者的拉取消息的行为。 在Spring-Kafka中&#xff0c;消费失败的重试次数可以…...

无涯教程-Python机器学习 - Semi-supervised Learning函数

Python机器学习 中的 Semi - 无涯教程网无涯教程网提供https://www.learnfk.com/python-machine-learning/machine-learning-with-python-semi-supervised-learning.html...

7 | 计算每个键对应的平均值,并按降序排序

假设您有一个包含销售订单的RDD,其中每个元素是一个键值对,其中键表示产品名称,值表示销售数量。您希望按产品名称对销售订单进行分组,并计算每个产品的总销售数量。最后,希望获得每个产品的总销售数量以及按产品名称分组的详细销售订单列表。 计算每个键对应的总和和计数…...

kafka详解二

kafka详解二 1、 offset 1.1 offset介绍 老版本 Consumer 的位移管理是依托于 Apache ZooKeeper 的&#xff0c;它会自动或手动地将位移数据提交到 ZooKeeper 中保存。当 Consumer 重启后&#xff0c;它能自动从 ZooKeeper 中读取位移数据&#xff0c;从而在上次消费截止的地…...

SAP_ABAP_接口技术_RFC远程函数实践总结

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型&#xff0c;ALV/REPORT|SMARTFROM|SCREEN|OLE|BAPI|BDC|PI|IDOC|RFC|API|WEBSERVICE|Enhancement|UserExits|Badi|Debughttps://blog.csdn.net/java_zhong1990/article/details/132469977 SAP接…...

计算机 --> 磁盘 --> 分区

一、分区&#xff1b;步骤较完整&#xff0c;未测试 网址&#xff1a;电脑硬盘怎么分区&#xff1f;C盘/D盘/E盘......快来创建自己的DIY磁盘吧&#xff01;_e盘怎么创建_布 迪的博客-CSDN博客...

3D视觉测量:形位公差 平面度测量(附源码)

文章目录 0. 测试效果1. 基本内容2. 实现方法3. 代码实现4. 参考文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_0. 测试效果 1. 基本内容 平面度是一个表达平面平整程度的度量指标,它描述了一个表面与一个理想平面之间的偏差程度。在工程和制造领域,平面度是一个重要的…...

vmware虚拟机远程开发

目录 1. 下载vmware2. 下载ubuntu镜像3. 安装4. 做一些设置4.1 分辨率设置4.2 语言下载4.3 输入法设置4.4 时区设置 5. 直接切换管理员权限6. 网络6.1 看ip6.2 ssh 7. 本地编译器连接远程服务器7.1 创建远程部署的配置7.2 文件同步7.3 远程启动项目 8. ubuntu安装golang环境8.1…...

Web安全——穷举爆破上篇(仅供学习)

Web安全 一、概述二、常见的服务1、burpsuite 穷举后台密码2、burpsuite 对 webshell 穷举破解密码3、有 token 防御的网站后台穷举破解密码3.1 burpsuite 设置宏获取 token 对网站后台密码破解3.2 编写脚本获取token 对网站后台密码破解 4、针对有验证码后台的穷举方法4.1 coo…...

POJ 3045 Cow Acrobats 二分+优先队列

一、题目大意 题目中给出了N头牛&#xff0c;这些牛要互相叠罗汉&#xff0c;牛i承担的风险risk[i]为牛i上面的牛的质量之和sum[i]&#xff08;如果上面没有牛就是0&#xff09;减去牛i的力量strength[i]&#xff0c;即risk[i]sum[i]-strength[i] 我们要优化这个叠罗汉的顺序…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

IP选择注意事项

IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时&#xff0c;需要考虑以下参数&#xff0c;然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...