当前位置:数据库 > mongodb >>

MongoDB自学笔记8--- 3.3 MongoDB Shell简介及简单使用

MongoDB自学笔记8--- 3.3 MongoDB Shell简介及简单使用
 
MongoDB自学笔记7---3.2 MongoDB数据类型
http://www.zzzyk.com/database/201308/235710.html
 
 3.3 MongoDB Shell简介及简单使用
mongoDB Shell是mongoDB自带的一个javascript shell,随mongoDB安装包一同发布。可以使用mongoDB shell从命令行与mongoDB实例交互。这个shell的作用十分强大,我们对数据库的管理操作基本都是通过这个shell,当然数据的CRUD也是同样可以操作的。以后我们经常会使用这个Shelll。在mongoDB2.4中使用V8 javascript引擎,官网说性能有了一定的提高。
实际上我们已经使用过了mongoDB shell,在第二章我们验证数据库是否安装成功的时候,使用的mongo命令,就是这里所说的shell。我们在第二章的时候,连接的是默认的数据库test,我们可以通过如下的命令连接其他的数据库。
mongo [ip地址]:[监听端口]/[数据库]。
例如我们可以使用mongo 127.0.0.1:27017/user,连接本机的user数据库。
3.3.1 查看数据库
查看当前有多少数据库需要使用如下两条命令中的一条,都可以查看当前的mongodb中有多少个数据库,需要注意使用这个命令必须是超级管理员,我们现在使用的登陆模式,都是以超级管理员身份登陆的,后面管理和安全那章会介绍如何实现权限控制:
show dbs 
show databases
查看当前所在的数据库,直接使用db就可以了。在mongodb shell中db就代表所用的数据库。
3.3.2 切换数据库、创建数据库、删除数据库
在mongodb中使用如下的命令切换或者创建数据库:
use [数据库名]
当这个数据库存在的时候,将会切换到本数据库;如果这个数据库不存在的时候,将会创建这个数据库,但是这里的数据库是隐式创建的。所谓隐式创建在mongodb中,如果这个数据库中没有数据的话,它认为这个数据库是没有意义的,它不会真正的去创建,而是等到你在里面插入了数据之后,才创建数据库。同样对于集合也是隐式创建的。
下面一段测试代码:
> show dbs  /*只存在两个数据库*/
local   0.078125GB
test    0.203125GB
> use newdb /*没有newdb,则创建,但是现在还是不能查看到*/
switched to db newdb
> show dbs
local   0.078125GB
test    0.203125GB
> db
newdb
> db.c1.insert({name:"xiangyue"}) /*插入数据后,newdb数据库被创建*/
> show dbs
local   0.078125GB
newdb   0.203125GB
test    0.203125GB

 

删除数据库,我们可以使用db.dropDatabase,这样将会删除当前的数据库。
3.3.3 查看集合
查看数据库中存在的集合,类似于关系型中查看数据库中的表,使用如下命令之一:
show tables /*应该是为了兼容SQL才提供的*/
show collections
3.3.4 新建集合
新建集合可以使用函数创建也可以使用自动隐式创建。
使用函数创建,函数如下:
> db.createCollection("c1")
{ "ok" : 1 }
> show tables
c1
system.indexes

 

看上面的代码我们看到,我们只是创建了c1集合,但是结果我们也看到了system.indexes集合。这个集合是mongodb自动创建的,存储的索引信息,关于索引我们将在第六章索引详细介绍。默认情况下,mongodb会为每一个集合的_id建立索引,所以为了存储这个索引,system.indexes这个集合才被创建了。
虽然上面的函数可以创建集合,但是用的很少,更多的是使用自动隐式创建集合,也就是只有在我们插入数据的时候数据库自动为我们创建集合。比如我们想在一个user集合中插入一个用户,但是user集合不存在,我们同样可以使用如下的命令插入数据:
db.user.insert({name:”xiangyue”,age:23})

 

这样mongodb会先创建user集合,然后将此用户插入到此集合。由于这个使用比较简单,所以推荐使用这个。
3.3.5 插入数据
插入数据需要使用insert命令,使用方法如下:
db.[集合名].insert([文档])
例如我们将一个用户插入到user集合中,代码如下:
> db.user.insert({name:"xiangyue",age:23})
> db.user.find()
{ "_id" : ObjectId("519cbddfe9c1b21d76cc927c"), "name" : "xiangyue", "age" : 23 }

 

在我们插入文档的时候,如果我们没有为该文档指定_id,mongodb将会为我们的文档自动创建一个不会重复的ObjectId,关于ObjectId的具体信息查看3.2Mongodb数据类型。
我们可以使用javascript批量插入数据。由于mongodb shell简单的说就是一个javascript shell所以javascript代码可以在mongodb shell中运行,所以我们可以使用javascript代码进行批量插入数据,例如我们插入10个用户到user集合中,代码如下:
> for(i=1;i<=10;i++){
... db.user.insert({_id:i,name:"user"+i,age:10+i})
... }
> db.user.find()
{ "_id" : ObjectId("519cbddfe9c1b21d76cc927c"), "name" : "xiangyue", "age" : 23 }
{ "_id" : 1, "name" : "user1", "age" : 11 }
{ "_id" : 2, "name" : "user2", "age" : 12 }
{ "_id" : 3, "name" : "user3", "age" : 13 }
{ "_id" : 4, "name" : "user4", "age" : 14 }
{ "_id" : 5, "name" : "user5", "age" : 15 }
{ "_id" : 6, "name" : "user6", "age" : 16 }
{ "_id" : 7, "name" : "user7", "age" : 17 }
{ "_id" : 8, "name" : "user8", "age" : 18 }
{ "_id" : 9, "name" : "user9", "age" : 19 }
{ "_id" : 10, "name" : "user10", "age" : 20 }

 

3.3.6 查找数据
在mongodb中查找数据使用find方法,比如我们利用上面的数据库查找name为user2的用户,代码如下:
> db.user.find({name:"user2"})
{ "_id" : 2, "name" : "user2", "age" : 12 }

 

find方法一般会接收一个BSON对象作为参数,如果没有传参数,默认也就是一个空的BSON对象,意思是查出所有的文档。如下就是查出了user集合中的所有对象:
> db.user.find()
{ "_id" : ObjectId("519cbddfe9c1b21d76cc927c"), "name" : "xiangyue", "age" : 23 }
{ "_id" : 1, "name" : "user1", "age" : 11 }
{ "_id" : 2, "name" : "user2", "age" : 12 }
{ "_id" : 3, "name" : "user3", "age" : 13 }
{ "_id" : 4, "name" : "user4", "age" : 14 }
{ "_id" : 5, "name" : "user5", "age" : 15 }
{ "_id" : 6, "name" : "user6", "age" : 16 }
{ "_id" : 7, "name" : "user7", "age" : 17 }
{ "_id" : 8, "name" : "user8", "age" : 18 }
{ "_id" : 9, "name" : "user9", "age" : 19 }
{ "_id" : 10, "name" : "user10", "age" : 20 }

 

3.3.7 删除数据
在mongodb中删除数据,使用remove,这个方法的使用方法与find类似,只是find是查找出来满足条件的,remove是删除满足条件的。
我们还是利用上面的数据,删除name为user2的用户,代码如下:
> db.user.find()
{ "_id" : 1, "name" : "user1", "age" : 11 }
{ "_id" : 2, "name" : "user2", "age" : 12 }
{ "_id" : 3, "name" : "user3", "age" : 13 }
{ "_id" : 4, "name" : "user4", "age" : 14 }
{ "_id" : 5, "name" : "user5", "age" : 15 }
{ "_id" : 6, "name" : "user6", "age" : 16 }
{ "_id" : 7, "name" : "user7", "age" : 17 }
{ "_id" : 8, "name" : "user8", "age" : 18 }
{ "
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,