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 } { "
上一个:Mongodb secondary上面replSet error RS102 too stale to catch up解决
下一个:PostgreSQL流复制参数max_wal_senders详解
- 更多mongodb疑问解答:
- 【急】MongoDB写入错误~~~~
- Mongodb NOSql 数据库问题,是否可以插入带接口的类
- java操作mongodb
- Spring data MongoDB 更新整个内嵌文档时报错???????
- node.js连接mongodb更新
- MongoDB Java驱动 WriteConcern.SAFE非常浪费资源
- 求科普,hibernate怎样操作mongodb?
- 问一下mongodb怎么用hibernate整合
- mongodb查询的数据过多
- 使用JAVA创建MongoDB的问题
- Mongodb事务管理问题?
- mongodb利用java进行模糊查询
- spring 抽象类 注入值为空(spring3+mongodb+morphia)
- 【急】MongoDB写入错误~~~~
- Mongodb NOSql 数据库问题,是否可以插入带接口的类