DBA MongoDB 库与集合
数据库
查看的命令
下面是查看库相关的命令:
命令 | 简写 | 描述 |
---|---|---|
show databases | show dbs | 查看所有库(库中必须有集合) |
db.getName() | db | 查看当前所在库 |
db.stats() | ... | 查看当前库状态 |
db.getMongo() | ... | 查看当前所在库链接地址 |
使用show databases来获取当前MongoDB中所有的数据库,这一条命令可以简写为show dbs,如下所示:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
使用db.getName(),可获取目前所在的数据库名称,这一条命令可简写为db,在MongoDB中,登录时默认会进入一个名为test的数据库,该库下没有任何信息。如下所示:
> db
test
使用db.stats(),可获取当前所在数据库的一些状态,如下所示:
> db.stats()
{
"db" : "test",
"collections" : 3,
"views" : 0,
"objects" : 7,
"avgObjSize" : 142.57142857142858,
"dataSize" : 998,
"storageSize" : 94208,
"numExtents" : 0,
"indexes" : 3,
"indexSize" : 61440,
"scaleFactor" : 1,
"fsUsedSize" : 4921679872,
"fsTotalSize" : 8575254528,
"ok" : 1
}
使用db.getMongo(),可查看当前所在库的链接地址,如下所示:
> db.getMongo()
connection to 127.0.0.1:27017
进入与创建
下面是创建库相关的命令:
命令 | 描述 |
---|---|
use 库名 | 进入或创建某个数据库 |
MongoDB中创建和进入某个数据库的命令都是use,但情况有2种:
- 已经有这个数据库,use就是进入该数据库
- 没有这个数据库,use就是进入并创建该数据库
情况1命令演示如下:
> use admin
switched to db admin
> db
admin
情况2命令演示如下:
> use db1
switched to db db1
> db
db1
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
上面的这个示例中,我们仅创建并进入了db1,但是由于db1下没有集合,所以show dbs显示不出该库,这是正常现象。
删除某个库
下面是删除库相关的命令:
命令 | 描述 |
---|---|
db.dropDatabase() | 必须use进将要被删除的库后才能执行该方法,删除数据库 |
MongoDB中删除库有两种情况:
- 当前所在库中没有集合,切换至别的数据库当前库自动删除
- 当前所在库中已有集合,使用db.dropDatabase()方法来删除该库与其下所有的集合
目前我们在db1这个空库中,尝试进入admin库后再看db1是否被删除:
> use admin
switched to db admin
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
现在我们重新创建并进入db1库,并朝其中创建一个文档后再进入admin库,查看是否被删除:
> use db1
switched to db db1
> db.createCollection("coll")
{ "ok" : 1 }
> use admin
switched to db admin
> show dbs
admin 0.000GB
config 0.000GB
db1 0.000GB
local 0.000GB
test 0.000GB
当db1有文档后,切换不会删除该库,此时若你执意要删除,可以通过db.dropDatabase()对其进行删除删除:
> use db1
switched to db db1
> db.dropDatabase()
{ "dropped" : "db1", "ok" : 1 }
> db
db1
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
需要注意,db.dropDatabase()方法必须在你进入该库之后方可执行,不能使用传参的方式进行删除,如:db.dropDatabase(“db1”),这种方式是错误的。
集合
查看的命令
下面是查看集合相关的命令:
命令 | 描述 |
---|---|
show collections | 查看当前库下所有集合 |
show tables | 同上 |
db.getCollectionNames() | 同上 |
这个没什么好说的,进入某个库后查看该库下的所有集合:
> use config
switched to db config
> show tables
system.sessions
> show collections
system.sessions
> db.getCollectionNames()
[ "system.sessions" ]
唯一值得一提的是对于db.getCollectionNames()这个方法来说,无论你是否填入参数,它返回的还是当前库下的集合。
如下所示,在config库中调用该方法看到的始终是config库下的集合:
> db
config
> db.getCollectionNames()
[ "system.sessions" ]
> db.getCollectionNames("admin")
[ "system.sessions" ]
> db.getCollectionNames("db1")
[ "system.sessions" ]
创建集合
下面是创建集合相关的命令:
命令 | 描述 |
---|---|
db.createCollection(“集合名”) | 在当前库下创建一个集合,若已有该集合,则也会提示创建成功 |
MongoDB中创建集合可以有两种方式:
- 直接对一个文档进行插入操作,可顺带的隐式创建集合
- 使用db.createCollection()方法来创建一个集合
方式1,想象我有一个集合(实际没有),直接对其插入文档:
> use db1
switched to db db1
> db.coll.insert({name : "Jack"})
WriteResult({ "nInserted" : 1 })
> show tables
coll
方式2,使用db.createCollection()方法创建集合:
> db.createCollection("collection")
{ "ok" : 1 }
> show tables
coll
collection
删除集合
下面是删除集合相关的命令:
命令 | 描述 |
---|---|
db.集合名.drop() | 删除当前库下的某一个集合 |
这个命令没啥好说的,直接上示例:
> db.collection.drop()
true
> show tables
coll
重命名
下面是集合重命名相关的命令:
命令 | 描述 |
---|---|
db.集合名.renameCollection(“新名”) | 为该库下的某个集合重命名 |
这个命令没啥好说的,直接上示例:
> db.coll.renameCollection("newColl")
{ "ok" : 1 }
> show tables
newColl
>