MongoDB shell操作
实验目的
1.了解MongoDB的shell操作语法
2.掌握MongoDB中对数据增删改查的命令
实验原理
MongoDB shell是一个可执行文件,是MongoDB自带的一个交互式JavaScript shell,位于MongoDB安装路径下的/bin文件夹中。要启动MongoDB shell,可执行命令mongo。这将在控制台提示符中启动该shell,MongoDB shell提供了多个命令,下面列出了多个MongoDB shell命令及其用途。
实验环境
Linux Ubuntu 16.04jdk-7u75-linux-x64mongodb-linux-x86_64-3.4.2## 实验内容
练习在MongoDB中创建集合、删除集合、插入数据、更新数据、删除数据、查询数据等。## 实验步骤
1.启动MongoDB shell。
mongo
2.切换到admin数据库,使用root账户。
use admin
db.auth('root','strongs')
3.查看当前数据库状态。
db.stats()
4.显示当前MongoDB版本。
db.version()
5.查询本地所有数据库名称。
show dbs
6.切换至mydb数据库,如果该数据库不存在,则会在插入第一条数据后创建该数据库。
use mydb
7.创建集合(集合相当于关系数据库的table)。
db.createCollection('mycollection')
8.查询所有数据库。
show dbs
9.查询当前库下的所有集合(collection)。
show collections
09.png
10.向集合mycollection中插入数据。(如果集合不存在,在插入数据时,MongoDB会自动创建集合)
db.mycollection.insert({'username':'zhangyu','age':13,'salary':500});
db.mycollection.insert({'username':'zhangyu','age':13,'salary':500});
db.mycollection.insert({'username':'laohu','age':20,'salary':200});
db.mycollection.insert({'username':'xiongmao','age':8,'salary':300});
11.添加数据使用insert方法,如果添加文档也可以使用先声明对象再添加,例如:
post = {name: 'zhangyu',
description: 'BIGDATA',
by: 'YXCX',
tags: ['mongodb', 'database', 'NoSQL'],
}
db.mycollection.insert(post)
12.MongoDB会为每个插入的对象自动生成一个"_id"的值,在插入的时候也可以自己指定这个值,例如:
db.mycollection.insert({
_id : "10000001",
name: 'MongoDB',
description: 'DATABASE',
by: '10gen',
tags: ['mongodb', 'database', 'NoSQL'],
})
13.查询集合mycollection中的数据。
db.mycollection.find()
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。
db.mycollection.update({username:'zhangyu'},{$set:{salary:600}},false,true)
15.将username为’zhangyu’的数据age字段数值增加1。
db.mycollection.update({username:'zhangyu'},{$inc:{age:1}},false,true)
②save()的语法为:db.collection.save( x ),x就是要更新的对象,只能是单条记录。也可以用Save执行插入操作,如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值,执行更新操作。
16.更新_id为10000001的数据。
db.mycollection.save({
_id:'10000001',
name: 'Mysql',
description: 'DATABASE',
by: 'Oracle',
tags: ['Oracle', 'database', 'SQL'],
})
17.再次查询mycollection集合,验证以上更新操作。
db.mycollection.find()
18.删除username为‘xiongmao’的数据。
db.mycollection.remove({username:'xiongmao'})
19.删除集合mycollection中全部数据。
db.mycollection.remove({})
删除语法如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
})
参数说明:query :(可选)删除的文档的条件。justOne : (可选)如果设为 true 或 1,则只删除一个文档。默认falsewriteConcern :(可选)抛出异常的级别。
20.重命名集合,mycollection改为mcollection。
db.mycollection.renameCollection('mcollection')
21.删除集合mcollection。
db.mcollection.drop()
22.删除当前数据库。
db.dropDatabase()
至此,实验结束!