zoukankan      html  css  js  c++  java
  • 推荐一个php7+ mongodb三方类

    由于项目需要,把项目升级到了php7。但是升级了之后发现mongo扩展不能用了。php7.0以上只支持mongodb扩展了。而mongodb扩展的驱动使用起来比monmgo扩展显得很复杂,啰嗦。在网上找了很久。终于找到了一个比较简洁的mongodb类。语法跟mongo的差不多。清晰,自然。

    项目地址https://github.com/mongodb/mongo-php-library

    因为项目是国外友人贡献的。所以没有可以看的很明白的文档。这里整理了一些常用的方法。

    获取实例
    
    $uri = "mongodb://username:password@host/database";
    $client = new MongoDBClient($uri);
    
    获取集合
    
    $collection = $client->selectCollection('test','test');
    
    获取一条数据
    
    $data = $collection->findOne(['id'=>1]);
    
    获取多条数据
    
    $where = ['type'=>1];
    $options = array(
        'projection' => array('id' => 1, 'age' => 1, 'name' => -1), // 指定返回哪些字段 1 表示返回 -1 表示不返回
        'sort' => array('id' => -1), // 指定排序字段
        'limit' => 10, // 指定返回的条数
        'skip' => 0, // 指定起始位置
    );
    $data = $collection->find($where,$options)->toArray();
    var_dump($data);
    
    去重
    
    $fileName = 'name';
    $where = ['id' => ['$lt' => 100]]
    $ret = $this->collection->distinct($fileName,$where);
    
    插入一条数据
    
    $data = array(
        'id' => 2,
        'age' => 20,
        'name' => '张三'
    );
    $ret = $collection->insertOne($data);
    $id=$ret->getInsertedId();
    
    批量插入
    
    $data = array(
        ['id' => 1, 'age' => 21, 'name' => '1xiaoli'],
        ['id' => 2, 'age' => 22, 'name' => '2xiaoli'],
        ['id' => 3, 'age' => 23, 'name' => '3xiaoli'],
        ['id' => 4, 'age' => 26, 'name' => '4xiaoli'],
        ['id' => 5, 'age' => 24, 'name' => '5xiaoli'],
        ['id' => 6, 'age' => 25, 'name' => '6xiaoli'],
    );
    $ret = $collection->insertMany($data);
    # 返回插入id
    var_dump($ret->getInsertedIds());
    
    更新一条
    
    $ret = $collection->updateOne(array('id' => 2), array('$set' => array('age' => 56)));
    
    更新多条
    
    $ret = $collection->updateMany(array('id' => ['$gt' => 1]), array('$set' => array('age' => 56, 'name' => 'x')));
    
    删除一条
    
    $ret = $collection->deleteOne(array('id' => 2));
    
    删除多条
    
    $collection->deleteMany(array('id' => array('$in' => array(1, 2))));
    
    聚合
    
    $ops = [
        [
            '$match' =>['type'=>['$in'=>[2,4]]]
        ],
        [
            '$sort' => ['list.create_time' => -1]  //sort顺序不能变,否则会造成排序混乱,注意先排序再分页
        ],
        [
            '$skip' => 0
        ],
        [
            '$limit' => 20000
        ],
    ];
    $data = $collection->aggregate($ops);
    foreach ($data as $document)
    {
        var_dump($document);
    }
    

    原文地址:https://segmentfault.com/a/1190000016252007

  • 相关阅读:
    ABAP接口用法
    监听textarea数值变化
    The first step in solving any problem is recognizing there is one.
    Wrinkles should merely indicate where smiles have been.
    God made relatives.Thank God we can choose our friends.
    Home is where your heart is
    ABAP跳转屏幕
    Python 工具包 werkzeug 初探
    atom通过remote ftp同步本地文件到远程主机的方法
    Mongodb学习笔记一
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9971655.html
Copyright © 2011-2022 走看看