• MongDB PHP7


    ---恢复内容开始---

    PHP7 Mongdb 扩展安装

    我们使用 pecl 命令来安装:

    $ /usr/local/php7/bin/pecl install mongodb
    

    执行成功后,会输出以下结果:

    ……
    Build process completed successfully
    Installing '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/mongodb.so'
    install ok: channel://pecl.php.net/mongodb-1.1.7
    configuration option "php_ini" is not set to php.ini location
    You should add "extension=mongodb.so" to php.ini
    

    接下来我们打开 php.ini 文件,添加 extension=mongodb.so 配置。

    可以直接执行以下命令来添加。

    $ echo "extension=mongodb.so" >> `/usr/local/php7/bin/php --ini | grep "Loaded Configuration" | sed -e "s|.*:s*||"`
    

    注意:以上执行的命令中 php7 的安装目录为 /usr/local/php7/,如果你安装在其他目录,需要相应修改 pecl 与 php 命令的路径。


    Mongodb 使用

    PHP7 连接 MongoDB 语法如下:

    $manager = new MongoDBDriverManager("mongodb://localhost:27017");
    

    插入数据

    将 name 为"W3Cschool教程" 的数据插入到 test 数据库的 w3cschool 集合中。

    <?php
    $bulk = new MongoDBDriverBulkWrite;
    $document = ['_id' => new MongoDBBSONObjectID, 'name' => 'W3Cschool教程'];
    
    $_id= $bulk->insert($document);
    
    var_dump($_id);
    
    $manager = new MongoDBDriverManager("mongodb://localhost:27017");  
    $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('test.w3cschool', $bulk, $writeConcern);
    ?>
    

    读取数据

    这里我们将三个网址数据插入到 test 数据库的 sites 集合,并读取迭代出来:

    <?php
    $manager = new MongoDBDriverManager("mongodb://localhost:27017");  
    
    // 插入数据
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->insert(['x' => 1, 'name'=>'W3Cschool教程', 'url' => 'http://www.w3cschool.cn']);
    $bulk->insert(['x' => 2, 'name'=>'Google', 'url' => 'http://www.google.com']);
    $bulk->insert(['x' => 3, 'name'=>'taobao', 'url' => 'http://www.taobao.com']);
    $manager->executeBulkWrite('test.sites', $bulk);
    
    $filter = ['x' => ['$gt' => 1]];
    $options = [
        'projection' => ['_id' => 0],
        'sort' => ['x' => -1],
    ];
    
    // 查询数据
    $query = new MongoDBDriverQuery($filter, $options);
    $cursor = $manager->executeQuery('test.sites', $query);
    
    foreach ($cursor as $document) {
        print_r($document);
    }
    ?>
    

    输出结果为:

    stdClass Object
    (
        [x] => 3
        [name] => taobao
        [url] => http://www.taobao.com
    )
    stdClass Object
    (
        [x] => 2
        [name] => Google
        [url] => http://www.google.com
    )
    

    更新数据

    接下来我们将更新 test 数据库 sites 集合中 x 为 2 的数据:

    <?php
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->update(
        ['x' => 2],
        ['$set' => ['name' => 'w3cschool在线工具', 'url' => '123.w3cschool.cn/webtools']],
        ['multi' => false, 'upsert' => false]
    );
    
    $manager = new MongoDBDriverManager("mongodb://localhost:27017");  
    $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
    ?>
    

    接下来我们使用 "db.sites.find()" 命令查看数据的变化,x 为 2 的数据已经变成了w3cschool在线工具:

    删除数据

    以下实例删除了 x 为 1 和 x 为 2的数据,注意 limit 参数的区别:

    <?php
    $bulk = new MongoDBDriverBulkWrite;
    $bulk->delete(['x' => 1], ['limit' => 1]);   // limit 为 1 时,删除第一条匹配数据
    $bulk->delete(['x' => 2], ['limit' => 0]);   // limit 为 0 时,删除所有匹配数据
    
    $manager = new MongoDBDriverManager("mongodb://localhost:27017");  
    $writeConcern = new MongoDBDriverWriteConcern(MongoDBDriverWriteConcern::MAJORITY, 1000);
    $result = $manager->executeBulkWrite('test.sites', $bulk, $writeConcern);
    ?>
    

    ---恢复内容结束---

  • 相关阅读:
    十天冲刺
    《构建之法》阅读笔记04
    每周学习进度第九周
    构建之法阅读笔记03
    返回一个一维整数数组中最大子数组的和(2)
    学习进度条
    冲刺日志05
    冲刺日志04
    冲刺日志03
    冲刺日志02
  • 原文地址:https://www.cnblogs.com/navysummer/p/8456585.html
Copyright © 2020-2023  润新知