php软件开发--mongodb

mongodb介绍,安装:

mongodb
    MongoDB 是一个介于关系数据库和非关系数据库之间的产品
    缺点:不支持连表查询,不支持sql语句,不支持事务存储过程等,所以不适合存储数据间关系比较复杂的数据,一般主要是当做一个数据仓库来使用。

需要掌握几个概念
    文档:是mongoDB中数据的基本单元,区分大小写的数据类型
    集合:是一组文档,多个文档组成一个集合
    数据库:
        多个集合可以组成数据库。一个mongoDB实例可以承载多个数据库,他们之间完全独立。
        一个数据库中可以有多个集合。
        一个集合中可以有多个文档。

安装mongodb:
    下载、双击安装、服务端(服务器启动,命令行启动) 端口27017
    ./mongodb --dbpath ../data --logpath ../log.log --port 27017 [--fork]
    数据库目录、日志目录、端口

常用指令增删改查

入门语句:
    创建数据库:use  数据库名
    查看数据库:show 数据库名
    创建集合:db.集合名.insert({})
    查看集合:db、show tables
    查询集合里面的文档:
        db.集合名.find()  查询所有
        db.集合名.findOne()   查询第一个文档
    删除集合:db.集合名.drop();
    删除数据库:
        use  数据库
        db.dropDatabase()
    帮助命令:help、db.help()、db.集合名.help()

增删改查操作
    添加文档:db.集合名.insert({k1:’v1’,k2:’v2’…..})
    删除文档:db.集合名.remove({条件})(不写条件删除所有的文档)
        $lt , $lte , $gt , $gte   ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin ,  $or ,  $not,
        $mod (取模),  $exists, $where
    更新文档:
        db.集合名.update({条件},{新的文档},是否新增,是否修改多条)
        db.集合.update(条件,新文档, 是否新增, 是否修改多条)
        db.集合名.update({条件},{修改器名称:{修改的键:修改的新值}})
    查询文档:
        db.集合名.find({条件}).sort({}).skip().limit().count()

用户权限及索引

用户管理(权限控制)
    mongodb里面的用户是属于数据库的,每个数据库有自己的管理员,管理员登录后,只能操作所属的数据库。
    创建超级管理员:
        use  admin
        db.createUser({ user:'root', pwd:'123456', roles:[{role:'root',db:'admin'}] })
    修改 Mongodb 数据库配置文件:
          mongod.cfg:
            security:
              authorization: enabled
    重启 mongodb 服务:
    超级管理员账户连接数据库:
      mongo 数据库名称  -u 用户名 -p 密码
      mongo  admin -u 用户名 -p 密码
      远程连接:mongo IP地址:端口/数据库名称 -u 用户名 -p 密码
    给PHP库创建一个普通管理员:
      use php
      db.createUser( { user: "phpadmin", pwd: "123456", roles: [ { role: "dbOwner", db: "php" } ] } )
    Mongodb 账户权限配置中常用的命令:
        show users; #查看当前库下的用户
        db.dropUser("eggadmin") #删除用户
        db.updateUser( "admin",{pwd:"password"}); #修改用户密码
        db.auth("admin","password"); #密码认证
    Mongodb 数据库角色:
        (1)数据库用户角色:read、readWrite;
        (2)数据库管理角色:dbAdmin、dbOwner、userAdmin;
        (3)集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
        (4)备份恢复角色:backup、restore;
        (5)所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
        (6)超级用户角色:root

mongodb中索引
    索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得 更快
    创建索引:
        db.集合名.ensureIndex({键名:1}) 1是升续 -1是降续
        多列索引(复合索引):
            db.集合名.ensureIndex({field1:1/-1, field2:1/-1});
        子文档索引:
            db.集合名.ensureIndex({filed.subfield:1/-1});
        唯一索引:
            db.集合名.ensureIndex({name:-1},{unique:true})
        查看索引:
            db.集合名.getIndexes();
            explain executionStats 查询具体的执行 时间
            db.tablename.find().explain( "executionStats" )
            关注输出的如下数值:explain.executionStats.executionTimeMillis
        删除索引:
            单:db.集合名.dropIndex({filed:1/-1});
            所有:db.集合名.dropIndexes();
        重建索引:
            mysql:optimize table 表名
            整理索引碎片
            db.集合名.reIndex()
        索引使用注意事项:
            (1)创建索引的时候,注意1是正序创建索引  -1是倒叙创建索引
            (2)索引的创建在提高查询性能的同时会影响插入性能,对于经常查询少插入的文档可以考虑用索引
            (3)复合索引要注意索引的先后顺序。
            (4)每个键全建立索引不一定就能提高性能,索引不是万能的。
            (5)在做排序工作的时候如果是超大数据量也可以考虑加上索引用来提高排序的性能。

mongdb中数据导出与导入、主从复制、php操作mongodb及linux安装

mongdb中数据导出与导入
    利用mongoexport
    -h host主机
    --port 端口
    -d 指明使用的库
    -c 指明要导出的集合
    -o 指明要导出的文件名
    --csv指定导出的csv格式
    -q 过滤导出
    -f field1 field2  列名
    -u username 用户名
    -p password 密码
    导入:mongoexport -h localhost -d phpDB -c phpList -o e:/php.json -u phpadmin -p 123456

    使用mongoimport命令
    -d 待导入的数据库
    -c 待导入的集合(不存在会自己创建)
    --type csv/json(默认)
    --file 备份文件名称包含路径
    导出:mongoimport -h localhost -d phpDB -c phpList --file e:/php.json -u phpadmin -p 123456

主从复制(读写分离)
    主从复制是一个简单的数据库同步备份的集群技术。
        在数据库集群中要明确的知道谁是主服务器,主服务器只有一台。
        从服务器要知道自己的数据源也就是对于的主服务是谁。
        --master用来确定主服务器,--slave和--source来控制从服务器。
    主:--port --dbpath –logpath --master
    从:--port –dbpath –logpath –slave –source 127.0.0.1:1111

php操作mongodb
    下载mongodb扩展php(版本、线程、vc、位数)
    移动ext、打开php.ini
    查看:phpinfo

    MongoDB\Driver\Manager("mongodb://phpadmin:123456@localhost:27017/php");
    插入:
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->insert(['name'=>'刘备','age'=>12,'email'=>'liubei@sohu.com']);
        $manager->executeBulkWrite('php.stu', $bulk);
    查询:
        $filter = ['age'=>['$gt'=>16]];
        $options = [
           'projection'=>['_id'=>0],
           'sort'=>['age'=>1]
        ];
        $query = new MongoDB\Driver\Query($filter, $options);
        $data = $manager->executeQuery('php.stu', $query);
    更新:
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->update(
            ['age' => 12],
            ['$set' => ['name' => '刘备被', 'email' => 'liubeibei@sohu.com']],
            ['multi' => false, 'upsert' => false]
        );
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
        $result = $manager->executeBulkWrite('php.stu', $bulk, $writeConcern);
    删除:
        $bulk = new MongoDB\Driver\BulkWrite;
        $bulk->delete(['age' => 22], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
        //$bulk->delete(['x' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据
        $writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
        $result = $manager->executeBulkWrite('php.stu', $bulk, $writeConcern);
linux安装mongodb:
    ./mongodb --dbpath ../data --logpath ../log.log --port 27017 --fork
    数据库目录、日志目录、端口

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值