码迷,mamicode.com
首页 > 数据库 > 详细

mongodb使用

时间:2016-05-02 15:37:47      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:

一、连接mongodb

//连接
[root@localhost ~]# mongo
MongoDB shell version: 3.0.7
connecting to: test
>
//指定host
[root@localhost ~]# mongo --host 127.0.0.1
MongoDB shell version: 3.0.7
connecting to: 127.0.0.1:27017/test
>
//指定port 
[root@localhost ~]# mongo --host 127.0.0.1 --port 27017
Mongodb shell version: 3.0.7
connecting to:127.0.0.1:27017/test
>

--> 如果把port指定错误,则会出现报错信息

 

二、用户管理

[root@localhost ~]# mongo
MongoDB shell version: 3.0.7
connecting to: test
> use test                //切换到test库下,如果test库不存在则自动创建
switched to db test
> db.createUser({user:"admin",pwd:"123456",roles:[{role:dbOwner,db:userdb}]})         
/*创建用户名为admin,密码为123456,角色中又有一个小集合*/
Successfully added user: {
        "user" : "admin",
        "rolles" : [
                   {
                        "role" : "dbOwner",
                        "db" : "userdb"
                    }
            ]
}
> db.system.users.find()        //列出所有用户,可补全下面的命令所列不出来的
> show users //查看当前库下所有的用户 > db.dropUser(admin) //删除用户

 

三、库管理

[root@localhost ~]# mongo
MongoDB shell version: 3.0.7
connecting to: test
> db.version     //查看版本
> use userdb
> show dbs                 //查看库,库里应该有集合,集合需要创建才有
> db.createCollection(clo1)               //在当前库下创建集合clo1,
> db.dropDatabase()            //删除当前库--想删除什么库,必须切换到当前库下
> db.stats()                     //查看当前库的信息
> db.serverStatus()          //查看mongodb服务器的状态

 

四、创建集合

> db.createCollection("mycol",{ capped: true,autoIndexID: true,size: 6142800,max: 10000 })

//此处语法为 db.createCollection(name,options)

-->
1. name 集合的名字

2.option可选,配置集合的参数。
参数如下:

capped: true/false
--> true : 启用封顶集合。

封顶集合是固定大小的集合,当它达到其最大大小,会自动覆盖最早的条目

true还需要指定尺寸参数。

==================
autoindexID: true/false
--> true : 自动创建索引 _id字段的默认值是false。


==================
size: 指定最大大小字节封顶集合

封顶--〉且是true还需指定字段,单位:B


==================
max: 封顶集合允许在文件的最大数量

 

五、副本集

介绍:

早期版本 使用master-slave,与MySQL主从类似。

但slave 为只读,当主库宕机后,从库不能自动切换为主

 

所有修改为  副本集 (repl set)

 

模式: 

一个主(primary)

 

多个从(secondary)  --给它们设置权重,主当掉时,权重最高的从切换为主

 

一个仲裁(arbiter)--负责裁决,而不存储数据

 

注意:此架构中

读写数据 --主

 

负载均衡 --手动指定读库的目标server

 

//机器准备

三台机器

172.7.15.111 (primary)

172.7.15.112 (secondary)

172.7.15.101 (secondary)

//编辑三台机器的配置文件
[root@localhost ~]# vi /etc/mongod.conf
//ADD
...
#operationProfiling:

replication:
##oplog大小
  oplogSizeMB: 20
##复制集名称
  replSetName: lulu
[root@localhost ~]# /etc/init.d/mongd restart


//副本集搭建
> use admin
> config={ id:"lulu", member:[_id:0,host:"172.7.15.111:27017"},{_id:1,host:"172.7.15.112:27017"},{_id:2,host:"172.7.15.101:27017"}]}
> rs.initiate(config)             //初始化配置
> rs.status()         //查看状态,也查看是否成员(StateStr)增加成功
...
//如果StateStr为STARTUP,则需要进行如下操作
> var
config={ id:"lulu", member:[_id:0,host:"172.7.15.111:27017"},{_id:1,host:"172.7.15.112:27017"},{_id:2,host:"172.7.15.101:27017"}]}
> rs.reconfig(config)
> rs.status()         //从的状态变为SECONDARY

//如果成员没有添加成功,进行如下操作
> rs.add("172.7.15.112")       //手动增加成员
> rs.add("172.7.15.101") 
> rs.config()            //查看配置的信息

 

//副本集测试

//主上建库,建集合
> use mydb   
> db.acc.insert({AccountID:1,UserName:"123",password:"123456"})
> show dbs


//从上查看
> show dbs

//!!!若出现错误
Error: listDatabase failed:{ "note" : "from execCommand,"ok": 0,"errmsg" :"not master"}

-->  执行
> rs.slaveok()

 

//副本集备份恢复

mongo
MongoDB shell version: 3.0.7
connecting to: test
lulu:PRIMARY> show dbs
local 0.078GB
mydb 0.078GB
mydb2 0.078GB
lulu:PRIMARY> use mydb
switched to db mydb
lulu:PRIMARY> show tables
system.indexes
testc
lulu:PRIMARY> db.testc.find()
lulu:PRIMARY> db.testc,insert({id:1,name:"lu",age:30})
WriteResult({ "nInserted" : 1})
lulu:PRIMARY> db.testc.find()
{ "_id" : ObjectId("56279c4d281af741f97bec57"), "id" : 1, "name" : "lu", "age" : 30}
lulu:PRIMARY> db.testc.insert({id:2,name:"linux",age:20})
WriteResult({ "nInserted" : 1})
lulu:PRIMARY> db.testc.find()
{ "_id" : ObjectId("56279c4d281af741f97bec57"), "id" : 1, "name" : "lu", "age" : 30}
{ "_id: : ObjectId("56279c4d281af741f97bec58"), "id" : 2,"name" : "linux", "age" : 20}


//备份
[root@localhost ~]# mongodump -d mydb -o /tmp/mongodbbakcup

//将备份好的数据导入到新文件夹
[root@localhost ~]# mongoexport -d mydb -c testc -o /tmp/12345/testc.json

--> -d 为库名
      -c 为子库名
       -o 为数据入到的目录


//恢复  ,需要指定最后具体恢复到的文件名
[root@localhost ~]# mongorestore -d mydb /tmp/mongodbbakcup/mydb

/*!!!!

当恢复时,恢复到的文件夹已经存在了数据,则不能够覆盖

如果想要覆盖原来的数据

--〉 mongodrestore --drop /tmp/123

*/

 

 

//mongodb结合php 

[root@localhost ~]# wget http://codeload.github.com/mongodb/mongo-php-driver/zip/master -O /usr/local/src/mong_php.zip
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# unzip mong_php.zip
[root@localhost src]# cd mongo-php-driver-master/
[root@localhost mongo-php-driver-master]# /usr/local/php/bin/phpize
[root@localhost mongo-php-driver-master]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost mongo-php-driver-master]# make && make intstall
[root@localhost mongo-php-driver-master]# vi /usr/local/php/etc/php.ini
//ADD
...
...
extension = mongo.so
[root@localhost mongo-php-driver-master]# /usr/local/php/bin/php -m
[root@localhost mongo-php-driver-master]# /etc/init.d/httpd restart
[root@localhost mongo-php-driver-master]# /etc/init.d/php restart

 

mongodb使用

标签:

原文地址:http://www.cnblogs.com/frankielf0921/p/5452375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!