https://docs.mongodb.com/manual/mongo/
一、MongoDB客户端使用
1、mongo:启动mongo的客户端,和mongo客户端的登录
[root@cmos1 bin]$ ./mongo MongoDB shell version v3.4.2 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.2 Server has startup warnings: 2017-03-28T19:32:06.747+0800 I STORAGE [initandlisten] 2017-03-28T19:32:06.747+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2017-03-28T19:32:06.747+0800 I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2017-03-28T19:32:07.117+0800 I CONTROL [initandlisten] >
如果连接远程的mongoDB的话
mongo paydb --username pay1usr --host 10.200.110.15 --port 27017 --password pay1usr1234
二、MongoDB数据库层管理相关命令
2.1、use 创建自定义数据库
use databaseName --如果 databaseName 数据库不存在, 新建数据库。如果存在,则连接该数据库。
2.2、show dbs 查看数据库列表
show dbs
> show dbs admin 0.000GB config 0.000GB local 0.000GB member_data 0.000GB >
2.3、db ---显示当前使用的数据库名称
> db
member_data
>
2.4、db.getName() ---显示当前使用的数据库名称
> db.getName()
member_data
>
2.5、 db.dropDatabase() --删当前使用的数据库
db.dropDatabase() # 执行删除
{ "ok" : 1 } # 返回
2.6、 db.repairDatabase() --修复当前数据库
> db.repairDatabase() { "ok" : 1 } >
2.7、 db.version() --当前数据库版本
> db.version()
4.0.6
>
2.8、 db.getMongo() --查看当前数据库的链接机器地址
> db.getMongo()
connection to 127.0.0.1:27017
>
2.9、db.getCollectionNames() --查看数据库中有那些个集合(表)
> db.getCollectionNames() [ "memberDto", "my", "t_member" ] >
2.10、db.stats() 统计数据库信息
db.stats()
# 统计数据库信息 db.stats() { "db" : "test", # 系统自带测试数据库 "collections" : 0, # 集合数量 "views" : 0, # "objects" : 0, # 文档对象的个数, 所有集合的记录数之和 "avgObjSize" : 0, # 平均每个对象的大小, 通过 dataSize / Objects 得到 "dataSize" : 0, # 当前库所有集合的数据大小 "storageSize" : 0, # 磁盘存储大小 "numExtents" : 0, # 所有集合的扩展数据量统计数 "indexes" : 0, # 已建立索引数量 "indexSize" : 0, # 索引大小 "fileSize" : 0, # "fsUsedSize" : 0, # "fsTotalSize" : 0, #总大小 "ok" : 1 }
默认单位:字节byte
三、MongoDB 集合管理相关命令
3.1、show collections --创建集合(表)
> db.duan.insert({name:"duan",age:20}) WriteResult({ "nInserted" : 1 }) #插入成功提示 >
3.2、show collections --查看所有的集合(表)
> show collections
duan
memberDto
my
t_member
>
3.3、db.xx.drop() --删除对应集合(表)
> db.duan.find() { "_id" : ObjectId("5cbd6fa7770fa2f0d42b78e6"), "name" : "duan", "age" : 20 } > db.duan.drop() true > db.duan.find() >
四、MongoDB 文档操作命令
4.1、给指定数据库添加集合并且添加记录
db.[documentName].insert({...})
> db.duan.insert({name:"duan",age:22}) WriteResult({ "nInserted" : 1 }) >
4.2、查询指定文档的数据
db.[documentName].find()
> db.duan.find() { "_id" : ObjectId("5cbd6fa7770fa2f0d42b78e6"), "name" : "duan", "age" : 20 } >
4.3、
查看文档数量
db.collectionName.find().count()
> db.duan.count()
2
>
4.4
、更新文档数据
db.[documentName].update({查询条件},{更新内容})
> db.my.update({"name":"zhang"},{"name":"zhang","dept":"renli"}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.my.find() { "_id" : ObjectId("58da50c316910cd26a9faa26"), "name" : "zhang", "dept" : "renli" } >
4.5、删除文档中的数据
db.[docmentName].remove({...})
> db.my.find() { "_id" : ObjectId("58da50c316910cd26a9faa26"), "name" : "zhang", "dept" : "renli" } { "_id" : ObjectId("58da51b216910cd26a9faa28"), "name" : "li", "dept" : "yanfa2" } > db.my.remove({"dept":"yanfa2"}) WriteResult({ "nRemoved" : 1 }) > db.my.find() { "_id" : ObjectId("58da50c316910cd26a9faa26"), "name" : "zhang", "dept" : "renli" } >
五、MongoDB 其它管理命令(管理类、统计、监控、性能)
5.1、查看数据库用户角色权限
show roles
# 显示 test 数据库的所有角色权限 show roles { "role" : "dbAdmin", # 数据库管理角色, 执行数据库管理相关操作功能 "db" : "test", "isBuiltin" : true, # 内置角色 "roles" : [ ], # 放置用户角色、权限等信息 "inheritedRoles" : [ ] } { "role" : "dbOwner", # 提供数据库任何管理操作功能, 此角色 # 集合了 readWrite, dbAdminhe userAdmin # 角色赋予的权限 "db" : "test", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" : [ ] } { "role" : "enableSharding", # 提供分片操作权限 "db" : "test", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" : [ ] } { "role" : "read", # 主要提供自定义业务数据库读权限 "db" : "test", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" : [ ] } { "role" : "readWrite", # 主要提供自定义业务数据库读写权限 "db" : "test", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" : [ ] } { "role" : "userAdmin", # 提供在当前数据库上创建和修改角色和用户的功能。 # 由于该角色允许操作员向任何用户授予任何权限, # 该角色还间接地提供对数据库的超级用户(root) # 的访问权限。 "db" : "test", "isBuiltin" : true, "roles" : [ ], "inheritedRoles" : [ ] }
5.2、查看统计数据库信息
db.stats()
# 统计数据库信息
db.stats()
{
"db" : "test", # 系统自带测试数据库
"collections" : 0, # 集合数量
"views" : 0, #
"objects" : 0, # 文档对象的个数, 所有集合的记录数之和
"avgObjSize" : 0, # 平均每个对象的大小, 通过 dataSize / Objects 得到
"dataSize" : 0, # 当前库所有集合的数据大小
"storageSize" : 0, # 磁盘存储大小
"numExtents" : 0, # 所有集合的扩展数据量统计数
"indexes" : 0, # 已建立索引数量
"indexSize" : 0, # 索引大小
"fileSize" : 0, #
"fsUsedSize" : 0, #
"fsTotalSize" : 0, #总大小
"ok" : 1
}
默认单位:字节byte
如果想要返回kb
db.stats(1024);
如果想要返回MB
db.stats(1048576);
如果想要返回GB
db.stats(1073741824);
5.2、mongostat 实时数据库状态,读写、加锁、索引命中、缺页中断、读写等待队列等情况。
每秒刷新一次状态值,并能提供良好的可读性,通过这些参数可以观察到MongoDB系统整体性能情况。
[mongod@MongoDB oplog]$ mongostat -h 10.0.0.152 --port 28017 insert query update delete getmore command flushes mapped vsize res faults qr|qw ar|aw netIn netOut conn set repl time *0 *0 *0 *0 0 1|0 0 303.0M 13.0M 0 0|0 0|0 143b 8k 1 RTR 2018-01-08T17:28:42+08:00
参数说明:
参数 |
参数说明 |
insert |
每秒插入量 |
query |
每秒查询量 |
update |
每秒更新量 |
delete |
每秒删除量 |
conn |
当前连接数 |
qr|qw |
客户端查询排队长度(读|写)最好为0,如果有堆积,数据库处理慢。 |
ar|aw |
活跃客户端数量(读|写) |
time |
当前时间 |
示例:
[root@localhost bin]# ./mongostat -h 10.200.110.99 --port 27017
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 981M 88.0M 0|0 1|0 158b 62.3k 7 Apr 22 16:35:41.814
*0 *0 *0 *0 0 2|0 0.0% 0.0% 0 981M 88.0M 0|0 1|0 158b 62.3k 7 Apr 22 16:35:42.813
*0 *0 *0 *0 0 1|0 0.0% 0.0% 0 981M 88.0M 0|0 1|0 157b 62.1k 7 Apr 22 16:35:43.815
5.3、 mongotop命令说明:
[mongod@MongoDB oplog]$ mongotop -h 127.0.0.1:27017 2018-01-08T17:32:56.623+0800 connected to: 127.0.0.1:27017 ns total read write 2018-01-08T17:32:57+08:00 admin.system.roles 0ms 0ms 0ms admin.system.users 0ms 0ms 0ms admin.system.version 0ms 0ms 0ms app.user 0ms 0ms 0ms automationcore.automation.job.status 0ms 0ms 0ms automationcore.config.automation 0ms 0ms 0ms automationcore.config.automationTemplates 0ms 0ms 0ms automationcore.config.automationTemplates_archive 0ms 0ms 0ms automationcore.config.automation_archive 0ms 0ms 0ms automationstatus.lastAgentStatus 0ms 0ms 0ms
mongotop重要指标
ns:数据库命名空间,后者结合了数据库名称和集合。 total:mongod在这个命令空间上花费的总时间。 read:在这个命令空间上mongod执行读操作花费的时间。 write:在这个命名空间上mongod进行写操作花费的时间。
5.4、 db.currentOp()
db.currentOp是个好东西,顾名思义,就是当前的操作。在mongodb中可以查看当前数据库上此刻的操作语句信息,包括insert/query/update/remove/getmore/command等多种操作。直接执行
db.currentOp()一般返回一个空的数组,我们可以指定一个参数true,这样就返回用户connections与系统cmmand相关的操作。
查看数据库当前执行什么操作。
用于查看长时间运行进程。
通过(执行时长、操作、锁、等待锁时长)等条件过滤。
10、Shell的help
里面有所有的shell可以完成的命令帮助
全局的help数据库相关的db.help()集合相关的db.[databaseName].help()