MongoDB日常运维操作命令集锦(4)

db.page.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "id",
"ns" : "pagedb.page"
},
{
"v" : 1,
"key" : {
"title" : 1,
"url" : -1
},
"name" : "title_1url-1",
"ns" : "pagedb.page"
}
]
当然,如果需要查询系统中全部的索引,可以使用db.system.indexes.find()函数。

11)删除索引
删除索引给出了两个方法:

db.mycoll.dropIndex(name)
2018-01-02T23:45:50.155+0000 E QUERY ReferenceError: name is not defined
at (shell):1:21
db.mycoll.dropIndexes()
{ "ok" : 0, "errmsg" : "ns not found" }

第一个通过指定索引名称,第二个删除指定集合的全部索引。

12)索引重建
可以通过集合的reIndex()方法进行索引的重建,示例如下所示:

db.page.reIndex()
{
"nIndexesWas" : 2,
"nIndexes" : 2,
"indexes" : [
{
"key" : {
"_id" : 1
},
"name" : "id",
"ns" : "pagedb.page"
},
{
"key" : {
"title" : 1,
"url" : -1
},
"name" : "title_1url-1",
"ns" : "pagedb.page"
}
],
"ok" : 1
}
13)统计集合记录数

use fragment
switched to db fragment
db.baseSe.count()
36749

上述统计了数据库fragment的baseSe集合中记录数。

14)查询并统计结果记录数

use fragment
switched to db fragment
db.baseSe.find().count()
36749
find()可以提供查询参数,然后查询并统计结果。上述执行先根据查询条件查询结果,然后统计了查询数据库fragment的baseSe结果记录集合中记录数。

15)查询指定数据库的集合当前可用的存储空间

use fragment
switched to db fragment
db.baseSe.storageSize()
142564096
16)查询指定数据库的集合分配的存储空间

db.baseSe.totalSize()
144096000
上述查询结果中,包括为集合(数据及其索引存储)分配的存储空间。

三、启动与终止

1)正常启动
[root@centos6-vm01 ~]# mongod --dbpath /data/db --logfile /var/mongo.log
说明:指定数据存储目录和日志目录

如果采用安全认证模式,需要加上--auth选项,如:
[root@centos6-vm01 ~]# mongod --auth --dbpath /data/db --logfile /var/mongo.log

2)以修复模式启动
[root@centos6-vm01 ~]# mongod --repair
以修复模式启动数据库。

实际很可能数据库数据损坏或数据状态不一致,导致无法正常启动MongoDB服务器,根据启动信息可以看到需要进行修复。或者执行:
[root@centos6-vm01 ~]# mongod -f /etc/mongodb.conf --repair

3)终止服务器进程

db.shutdownServer()
终止数据库服务器进程。或者,可以直接kill掉mongod进程即可。

四、安全管理

1)以安全认证模式启动
[root@centos6-vm01 ~]# mongod --auth --dbpath /usr/mongo/data --logfile /var/mongo.log
使用--auth选项启动mongod进程即可启用认证模式。
或者,也可以修改/etc/mongodb.conf,设置auth=true,重启mongod进程。

2)添加用户

db.createUser({user: "admin",pwd: "1234!@#$qwer",roles: [ "readWrite", "dbAdmin" ]})
添加数据库用户,添加成功,则显示结果如下所示:

1
2

db.createUser({user: "admin",pwd: "1234!@#$qwer",roles: [ "readWrite", "dbAdmin" ]})
Successfully added user: { "user" : "admin", "roles" : [ "readWrite", "dbAdmin" ] }
3)安全认证
前提是必须进入该用户对应的database才行,出现1代表成功
db.auth("admin", "1234!@#$qwer")
数据库安全认证。认证成功显示结果:

use admin
switched to db admin
db.auth("admin", "1234!@#$qwer")

如果是认证用户,执行某些命令,可以看到正确执行结果,如下所示:

db.system.users.find()
{ "_id" : "fragment.admin", "user" : "admin", "db" : "fragment", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "/QZtFAvcavqZIm15FmbToA==", "storedKey" : "t91XZuIrnUYtuN1bG+hNg58R+w0=", "serverKey" : "vZLGW0nVpGSKfUHsS2RABOXhOb4=" } }, "roles" : [ { "role" : "readWrite", "db" : "fragment" }, { "role" : "dbAdmin", "db" : "fragment" } ] }
4、为数据库写数据(同步到磁盘)加锁
db.runCommand({fsync:1,lock:1})
说明:该操作已经对数据库上锁,不允许执行写数据操作,一般在执行数据库备份时有用。执行命令,结果示例如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f4892ae8b524347eef5d3289f45192bc.html