一、装包
[root@ip50 ~]# tar -zxf mongodb/mongodb-linux-x86_64-rhel70-3.6.3.tgz //解压安装包 [root@ip50 ~]# mkdir /usr/local/mongodb //创建主目录 [root@ip50 ~]# cp -r mongodb-linux-x86_64-rhel70-3.6.3/bin /usr/local/mongodb/ //将主程序拷贝到主目录 [root@ip50 ~]# cd /usr/local/mongodb/ [root@ip50 mongodb]# mkdir -p etc log data/db //创建工作目录二、修改配置文件
[root@ip50 ~]# vim /usr/local/mongodb/etc/mongodb.conf logpath=/usr/local/mongodb/log/mongodb.log logappend=true //追加方式记录日志信息 dbpath=/usr/local/mongodb/data/db //数据库目录 fork=true //守护进程方式运行三、启动、连接服务
启动服务 [root@ip50 mongodb]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf 连接服务,本地连接,默认没有设置密码 [root@ip50 ~]# /usr/local/mongodb/bin/mongo show dbs //显示已有的库 use admin //切换到admin库 show tables //查看当前库下有哪些表 exit //退出四、停止服务,设置命令别名,查看文件信息
停止服务 [root@ip50 ~]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown 定义别名 [root@ip50 ~]# alias mstart="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf" [root@ip50 ~]# alias mstop="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown" 永久别名定义 [root@ip50 ~]# vim /root/.bashrc ... ... alias mstart="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf" alias mstop="/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/etc/mongodb.conf --shutdown" ... ...五、修改访问服务的ip跟端口
[root@ip50 ~]# vim /usr/local/mongodb/etc/mongodb.conf logpath=/usr/local/mongodb/log/mongodb.log logappend=true dbpath=/usr/local/mongodb/data/db fork=true bind_ip=192.168.4.50 //定义访问ip port=27050 //定义端口 //修改之后,连接服务,需要指定ip跟端口 [root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050查看、创建、切换、删除库
show dbs //查看已有的库db //显示当前所在的库use 库名 //切换库,若库不存在则会延时创建库show collections 或 show tables //查看库下已有集合db.dropDatabase() //删除当前所在的库数据库名称规范
不能是空字符串不得含有’ '(空格)、.、$、/、\和\0(空字符)应全部小写最多64字节集合管理
查看、创建、删除集合show collections 或show tables 查看集合db.集合名.drop() //删除集合db.集合名.save({","}) //创建集合,集合不存在时,创建并添加文档集合命名规范
不能是空字符串""不能含有\0字符(空字符),此字符表示几个的结尾不能以"system."开头,这是为系统集合保留的前缀用户创建的集合名字不能含有保留字符文档基本管理
文档:类似于MySQL表里的记录 查看、统计、添加、删除文档db.集合名.find()db.集合名.count()db.集合名.insert({“name”:“jim”})db.集合名.find({条件})db.集合名.findOne() //返回一条文档db.集合名.remove({}) //删除所有文档db.集合名.remove({条件}) //删除匹配的所有文档创建集合,添加数据
[root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050 > db.t1.save({'name':'bob','age':21}) > show tables t1 > db.t1.save({'school':'Qinghua','address':'beijing','tel':666}) > db.t1.find() { "_id" : ObjectId("5ce7963049efaff863716965"), "name" : "bob", "age" : 21 } { "_id" : ObjectId("5ce7967049efaff863716966"), "school" : "Qinghua", "address" : "beijing", "tel" : 666 } > db.t1.drop() //删除集合 true字符string/布尔bool/空null 字符串string
UTF-8字符串可以表示为字串类型的数据{name:“张三”}或{school:“beida”}布尔bool
布尔类型有两个值true和false,{x:true}空null
用于表示空值或者不存在的字段,{x:null} > db.t2.save({name:"lucy",ruslt:null}) > db.t2.save({"gender":true,"height":false}) > db.t2.find() { "_id" : ObjectId("5ce7a64d49efaff86371696c"), "name" : "lucy", "ruslt" : null } { "_id" : ObjectId("5ce7a68549efaff86371696d"), "gender" : true, "height" : false }数值/数组array
数值 shell默认使用64位浮点型数值。{x:3.14}或{x:3}NumberInt(4字节整数){x:NumberInt(3)}NumberLong(8字节整数){x:NumberLong(3)} 数组array 数据列表或数据集可以表示为数组{x:[“a”,“b”,“c”]} > db.t3.save({x:3.14,y:3.56}) > db.t3.save({z:NumberInt(55.55)}) > db.t3.save({w:NumberLong(66.66)}) //不允许存储浮点型数值 > db.t3.save({w:NumberLong(66)}) > db.t3.find() { "_id" : ObjectId("5ce7a8a249efaff86371696e"), "x" : 3.14, "y" : 3.56 } { "_id" : ObjectId("5ce7a8db49efaff86371696f"), "z" : 55 } { "_id" : ObjectId("5ce7a90249efaff863716970"), "w" : NumberLong(66) }代码/日期/对象
代码 查询和文档中可以包括任何JavaScript代码{x:function(){/代码/}} 日期 日期被存储为自新纪元以来经过的毫秒数,不含时区{x:new Date()} 对象 对象id是一个12字节的字符串,是文档的唯一标识{x:ObjectId()} > db.t4.save({name:"jack",birthday:new Date()}) > db.t4.save({lname:"php",phpCode:function(){/*<?php echo "hello boy!!!"; ?>*/}}) > db.t4.save({w:ObjectId()}) > db.t4.find() { "_id" : ObjectId("5ce7ae0949efaff863716973"), "name" : "jack", "birthday" : ISODate("2019-05-24T08:40:41.060Z") } { "_id" : ObjectId("5ce7ae8649efaff863716974"), "lname" : "php", "phpcode" : { "code" : "function (){/*<?php echo \"hello boy!!!\"; ?>*/}" } } { "_id" : ObjectId("5ce7af5449efaff863716976"), "w" : ObjectId("5ce7af5449efaff863716975") }内嵌/正则表达式
内嵌 文档可以嵌套其他文档,被嵌套的文档做为值来处理 > db.t5.save({"beida":{"worker":"hsy","tel":119,address:"beijing","people":10000},money:10000}) > db.t5.find() { "_id" : ObjectId("5ce7b2cb49efaff863716978"), "beida" : { "worker" : "hsy", "tel" : 119, "address" : "beijing", "people" : 10000 }, "money" : 10000 } 正则表达式 查询时,使用正则表达式做为限定条件{x:/正则表达式/} > db.t5.save({linenull:/^$/,linefirst:/^/}) > db.t5.find() { "_id" : ObjectId("5ce7b3c849efaff863716979"), "linenull" : /^$/, "linefirst" : /^/ }数据导出
语法格式1 #mongoexport [--host IP地址 --port 端口] -d 库名 -c 集合名 -f 字段名1,字段名2 --type=csv > 目录名/文件名.csv
[root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t2 -f name,ruslt --type=csv > /root/1.txt [root@ip50 ~]# cat /root/1.txt语法格式2 #mongoexport --host IP地址 --port 端口 -d 库名 -c 集合名 -q '{条件}' -f 字段名1,字段名2 --type=csv > 目录名/文件名.csv
[root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t4 -q '{name:/.*jack.*/}' -f name,age --type=csv > /root/2.txt [root@ip50 ~]# cat /root/2.txt注意:导出为csv格式必须使用-f指定字段名列表,如果不指定–type,默认是json格式
语法格式3 # mongoexport [--host IP地址 --port 端口] -d 库名 -c 集合名 [-q '{条件}' -f 字段列表] --type=json > 目录名/文件名.json
[root@ip50 ~]# /usr/local/mongodb/bin/mongoexport --host 192.168.4.50 --port 27050 -d userdb -c t4 --type=json > /root/3.json [root@ip50 ~]# cat /root/3.json数据导入
语法格式1 #mongoimport --host IP地址 --port 端口 -d 库名 -c 集合名 --type=json 目录名/文件名.json
语法格式2 #mongoimport --host IP地址 --port 端口 -d 库名 -c 集合名 --type=csv [--headerline] [--drop] 目录名/文件名.csv
注:
导入数据时,若库和集合不存在,则先创建库和集合后再导入数据若库和集合已经存在,则以追加的方式导入数据到集合里使用–drop选项可以删除原数据后导入新数据,–headerline 忽略标题导入etc写的passwd
[root@ip50 ~]# cp /etc/passwd /root/ [root@ip50 ~]# sed -i 's/:/,/g' /root/passwd [root@ip50 ~]# sed -i '1iname,password,uid,gid,comment,homedir,shell' /root/passwd //第一行添加7个表头导入到userdb库下的user集合里边
[root@ip50 ~]# /usr/local/mongodb/bin/mongoimport --host 192.168.4.50 --port 27050 -d userdb -c user --type=csv --headerline --drop /root/passwd登录查看数据
[root@ip50 ~]# /usr/local/mongodb/bin/mongo --host 192.168.4.50 --port 27050备份数据所有库到当前目录下的dump目录下 # mongodump [--host ip地址 --port 端口]
[root@ip50 ~]# /usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 [root@ip50 ~]# ls dump/备份时指定备份的库和备份目录 # mongodump [--host ip地址 --port 端口] -d 数据库名 -c 集合名 -o 目录
[root@ip50 ~]# mkdir /mybak [root@ip50 ~]# /usr/local/mongodb/bin/mongodump --host 192.168.4.50 --port 27050 -d userdb -c user -o /mybak/查看bson文件内容 # bsondump ./dump/bbs/t1.bson
[root@ip50 ~]# /usr/local/mongodb/bin/bsondump /mybak/userdb/user.bson语法格式 #mongorestore --host ip地址 --port 端口 -d 数据库名 [-c 集合名] 备份目录名
将50上的备份文件拷贝到51上,在51上进行数据恢复
[root@ip51 ~]# /usr/local/mongodb/bin/mongorestore --host 192.168.4.51 --port 27051 -d userdb /root/mybak/userdb