4)db.serverStatus()
查看数据库服务器的状态。
有时,通过查看数据库服务器的状态,可以判断数据库是否存在问题,如果有问题,如数据损坏,可以及时执行修复。
5)查询指定数据库统计信息
use fragment
db.stats()
查询结果示例如下所示:
use fragment
switched to db fragment
db.stats()
{
"db" : "fragment",
"collections" : 0,
"objects" : 0,
"avgObjSize" : 0,
"dataSize" : 0,
"storageSize" : 0,
"numExtents" : 0,
"indexes" : 0,
"indexSize" : 0,
"fileSize" : 0,
"ok" : 1
}
6)查询指定数据库包含的集合名称列表
db.getCollectionNames()
结果如下所示:
db.getCollectionNames()
[
"17u",
"baseSe",
"bytravel",
"daodao",
"go2eu",
"lotour",
"lvping",
"mafengwo",
"sina",
"sohu",
"system.indexes"
]
二、基本DDL和DML
1)创建数据库
如果你习惯了关系型数据库,你可能会寻找相关的创建数据库的命令。在MongoDB中,你可以直接通过use dbname来切换到这个数据库上下文下面,系统会自动延迟创建该数据库,例如:
show dbs
local 0.078GB
use LuceneIndexDB
switched to db LuceneIndexDB
show dbs
local 0.078GB
db
LuceneIndexDB
db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})
WriteResult({ "nInserted" : 1 })
show dbs
LuceneIndexDB 0.078GB
local 0.078GB
可见,在use指定数据库后,并且向指定其中的一个集合并插入数据后,数据库和集合都被创建了。
2)删除数据库
直接使用db.dropDatabase()即可删除数据库。
3)创建集合
可以使用命令db.createCollection(name, { size : ..., capped : ..., max : ... } )创建集合,示例如下所示:
db.createCollection('replicationColletion', {'capped':true, 'size':10240, 'max':17855200})
{ "ok" : 1 }
show collections
replicationColletion
storeCollection
system.indexes
4)删除集合
删除集合,可以执行db.mycoll.drop()。
5)插入更新记录
直接使用集合的save方法,如下所示:
db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})
WriteResult({ "nInserted" : 1 })
更新记录,使用save会将原来的记录值进行覆盖实现记录更新。
6)查询一条记录
使用findOne()函数,参数为查询条件,可选,系统会随机查询获取到满足条件的一条记录(如果存在查询结果数量大于等于1)示例如下所示:
db.storeCollection.findOne({'version':'3.5'})
{
"_id" : ObjectId("5a4c1733f5c45f057ae82292"),
"version" : "3.5",
"segment" : "e3ol6"
}
7)查询多条记录
使用find()函数,参数指定查询条件,不指定条件则查询全部记录。
8)删除记录
使用集合的remove()方法,参数指定为查询条件,示例如下所示:
db.storeCollection.remove({'version':'3.5'})
WriteResult({ "nRemoved" : 2 })
db.storeCollection.findOne()
null
9)创建索引
可以使用集合的ensureIndex(keypattern[,options])方法,示例如下所示:
use pagedb
switched to db pagedb
db.page.ensureIndex({'title':1, 'url':-1})
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
db.system.indexes.find()
{ "v" : 1, "key" : { "_id" : 1 }, "name" : "id", "ns" : "pagedb.page" }
{ "v" : 1, "key" : { "title" : 1, "url" : -1 }, "name" : "title_1url-1", "ns" : "pagedb.page" }
上述,ensureIndex方法参数中,数字1表示升序,-1表示降序。
使用db.system.indexes.find()可以查询全部索引。
10)查询索引
我们为集合建立的索引,那么可以通过集合的getIndexes()方法实现查询,示例如下所示: