本文共 4546 字,大约阅读时间需要 15 分钟。
今日趁周末得空,将近日在学习的MongoDB数据库常用命令作以下整理,方便工作中查看
MongoDB的逻辑结构主要由文档、集合和数据库三部分组成。其中文档是MongoDB的核心概念,它是MongoDB逻辑存储的最小单元,相当于关系型数据库中的一行记录,多个文档组成集合,集合相当于关系型数据库中的表,多个集合组成数据库。
SQL术语 | 说明 | MongoDB术语 | 说明 |
---|---|---|---|
database | 数据库 | database | 数据库 |
table | 数据库表 | collection | 集合 |
row | 记录 | document | 行域 |
column | 字段 | field | 域 |
index | index | 索引 | |
table joins | 表连接 | 不支持 | |
primary key | 主键 | primary key | 自动将_id字段设置为主键 |
一个MongoDB中可以创建多个数据库,默认的数据库为test。
- admin:从权限的角度来看,这是root数据库。将一个用户添加到这个数据库中,该用户将自动继承所有数据库的权限;
- local:这个数据永远不会被复制,可用来存储限于本地单台服务器的任意集合;
- config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
#本地登录(默认实例端口号为:--port=27017,可以不写)> mongo#登录远程主机的实例> mongo --host 192.168.1.2 --port =27017#退出MongoDB> exit
#创建数据库(如果数据库不存在,则创建数据库,否则切换到指定数据库)> use school#查看所有数据库> show dbs#删除school数据库> use school> db.dropDatabase()#显示数据库操作命令> db.help()
集合就是MongoDB文档组,类似于关系数据库管理系统中的把表格,集合存于数据库中,集合没有固定的结构,这样子集合中可以存放不同格式和类型的表格。
#创建info集合> db.createcollection('info')#查看集合方法一:> show tabels方法二:> show colletctions#显示info集合操作命令> db.info.help()
文档是一个键值对(BSON),不需要设置相同的字段,并且相同的字段不需要相同的数据类型。
#插入一条记录> db.info.insert({"id":1,"score":88,"address":"金川校区","hobby":["game","talk","sport"]})#向指定集合中插入一条文档数据> db.collection.insertOne()#向指定集合中插入多条文档数据> db.collection.insertMany()#通过循环批量插入数据> for(var i=1;i<100;i++)db.info.insert({"id":i,"name":"jack"+i})
#删除info集合中id=1的文档> db.info.remove({"id":"1"})
#修改info集合id=1的name值为"zhangsan"文档db.info.update({"id":"1"},{$set:{"name":"zhangsan"}})
#查询info集合所有文档> db.info.find()#查询info集合id为1的文档> db.info.findOne({id:1})#统计记录数> db.info.count()
#备份本地school数据库> [root@localhost ~]# mkdir /backup[root@localhost ~]# mongodump -d school -o /backup/2018-07-14T03:36:44.427-0400 writing school.info to2018-07-14T03:36:44.429-0400 done dumping school.info (99 documents)#恢复本地school数据库至数据库abc中> [root@localhost ~]# mongorestore -d abc --dir=/backup/school2018-07-14T03:37:40.174-0400 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead2018-07-14T03:37:40.174-0400 building a list of collections to restore from /backup/school dir2018-07-14T03:37:40.175-0400 reading metadata for abc.info from /backup/school/info.metadata.json2018-07-14T03:37:40.187-0400 restoring abc.info from /backup/school/info.bson2018-07-14T03:37:40.208-0400 no indexes to restore2018-07-14T03:37:40.208-0400 finished restoring abc.info (99 documents)2018-07-14T03:37:40.209-0400 done#导出本机school数据库info集合> [root@localhost ~]# mongoexport -d school -c info -o /backup/info.json2018-07-14T03:44:41.610-0400 connected to: localhost2018-07-14T03:44:41.613-0400 exported 99 records#导入备份数据至本机school数据库user集合> [root@localhost ~]# mongoimport -d school -c user --file /backup/info.json2018-07-14T03:45:09.300-0400 connected to: localhost2018-07-14T03:45:09.330-0400 imported 99 documents#导出本机school数据库user1集合id=10的数据> [root@localhost ~]# mongoexport -d school -c user -q '{"id":{"$lt":10}}' -o /backup/top10.json2018-07-14T03:51:23.968-0400 connected to: localhost2018-07-14T03:51:23.969-0400 exported 9 records
> show dbs> db.copyDatabase("school","school_1")![image](https://note.youdao.com/favicon.ico)
#启用如下2个实例> [root@localhost ~]# netstat -tunlp | grep mongodtcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 61249/mongodtcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN 61212/mongod#登录端口号为27018的实例> mongo --port 27018#查询数据库> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GB#克隆端口号为27017实例的school数据库的info表至本实例数据库中> db.runCommand({"cloneCollection":"school.info","from":"192.168.100.100:27017"})![image](https://note.youdao.com/favicon.ico)
#登录mongodbmongo#在admin数据库创建新用户root:123123> use admin> db.createUser({"user":"root","pwd":"123123","roles":["root"]})Successfully added user: { "user" : "root", "roles" : [ "root" ] }#退出> exit#关闭mongodb服务mongod -f /data/conf/mongodb1.conf --shutdown#带认证参数方式启动mongodb服务mongod -f /data/conf/mongodb1.conf --auth#登录mongodb数据库mongo#查询数据库show dbs> 不显示内容,这里要先授权认证后才能执行操作> use admin#使用授权root用户验证> db.auth("root":"123123")#再次查询,已经可以查询数据了> show dbsadmin 0.000GBconfig 0.000GBlocal 0.000GBschool 0.000GB#退出> exit
1. 查看当前正在运行的进程的命令:db.currentOp() ------> 获取opid进程号2. 终止正在运行的高消耗资源的进程命令:db.killOP(opid)
更详细的内容,请多参考
转载于:https://blog.51cto.com/10316297/2142660