MongoDB实验——MongoDB shell操作

MongoDB shell操作

实验原理

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

一、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())"

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

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

jsp 复制代码
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。命令运行结果如图所示。

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")(因此地址太长,我换了个文件路径)

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

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

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

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

二、MongoDB shell操作

实验内容

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

实验步骤

1.启动MongoDB shell。

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

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

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

3.查看当前数据库状态

4.显示当前MongoDB版本

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

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

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

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

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

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

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

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

13.查询集合mycollection中的数据

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

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

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

16.更新_id为10000001的数据。

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

18.删除username为'yuhaowen'的数据。

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

删除语法如下:

my 复制代码
db.mycollection.remove(
			<query>,
			{
				justOne:<boolean>,
				writeConcern:<document>
			}
		)

参数说明:

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

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

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

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

21.删除集合mcollection

22.删除当前数据库

至此该实验shell操作结束!

三、MongDB 查询

实验内容

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

2.MongoDB 条件查询

3.MongoDB AND和OR查询

4.MongoDB $type 操作符

5.MongoDB 正则表达式

实验步骤

1.启动MongoDB shell

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

3.插入实验数据

4.统计集合中数据条数

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

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

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

6.查询第一条数据

注意,findOne中的O要大写

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

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

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

9.限定查询3条数据

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

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

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

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

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

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

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

MongoDB与RDBMS中Where语句的比较:

14.查询age小于13的数据

15.查询age等于13的数据

16.查询age大于15的数据

17.查询不等于13的数据

MongoDB AND条件

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

mysql 复制代码
db.col.find({key1:value1,key2:value2})

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

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

MongoDB OR条件

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

mysql 复制代码
db.col.find(
	{
    	$or:[
            {key1:value1},{key2:value2}
        ]
    }
)

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

AND和OR联合使用

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

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

MongoDB $type 操作符

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

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

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

MongoDB 正则表达式

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

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

24.查询以z开头的数据

相关推荐
Elastic 中国社区官方博客5 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪6 小时前
两次连接池泄露的BUG
java·数据库
TDengine (老段)8 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq7422349848 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE9 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle
Dxy12393102169 小时前
MySQL的SUBSTRING函数详解与应用
数据库·mysql
码力引擎9 小时前
【零基础学MySQL】第十二章:DCL详解
数据库·mysql·1024程序员节
杨云龙UP9 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql
l1t9 小时前
利用DeepSeek辅助修改luadbi-duckdb读取DuckDB decimal数据类型
c语言·数据库·单元测试·lua·duckdb
安当加密9 小时前
Nacos配置安全治理:把数据库密码从YAML里请出去
数据库·安全