资讯专栏INFORMATION COLUMN

推荐一个php7+ mongodb三方类

U2FsdGVkX1x / 2485人阅读

摘要:由于项目需要,把项目升级到了。但是升级了之后发现扩展不能用了。以上只支持扩展了。而扩展的驱动使用起来比扩展显得很复杂,啰嗦。终于找到了一个比较简洁的类。项目地址因为项目是国外友人贡献的。这里整理了一些常用的方法。

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

</>复制代码

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

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

</>复制代码

  1. 获取实例

</>复制代码

  1. $uri = "mongodb://username:password@host/database";
  2. $client = new MongoDBClient($uri);

</>复制代码

  1. 获取集合

</>复制代码

  1. $collection = $client->selectCollection("test","test");

</>复制代码

  1. 获取一条数据

</>复制代码

  1. $data = $collection->findOne(["id"=>1]);

</>复制代码

  1. 获取多条数据

</>复制代码

  1. $where = ["type"=>1];
  2. $options = array(
  3. "projection" => array("id" => 1, "age" => 1, "name" => -1), // 指定返回哪些字段 1 表示返回 -1 表示不返回
  4. "sort" => array("id" => -1), // 指定排序字段
  5. "limit" => 10, // 指定返回的条数
  6. "skip" => 0, // 指定起始位置
  7. );
  8. $data = $collection->find($where,$options)->toArray();
  9. var_dump($data);

</>复制代码

  1. 去重

</>复制代码

  1. $fileName = "name";
  2. $where = ["id" => ["$lt" => 100]]
  3. $ret = $this->collection->distinct($fileName,$where);

</>复制代码

  1. 插入一条数据

</>复制代码

  1. $data = array(
  2. "id" => 2,
  3. "age" => 20,
  4. "name" => "张三"
  5. );
  6. $ret = $collection->insertOne($data);
  7. $id=$ret->getInsertedId();

</>复制代码

  1. 批量插入

</>复制代码

  1. $data = array(
  2. ["id" => 1, "age" => 21, "name" => "1xiaoli"],
  3. ["id" => 2, "age" => 22, "name" => "2xiaoli"],
  4. ["id" => 3, "age" => 23, "name" => "3xiaoli"],
  5. ["id" => 4, "age" => 26, "name" => "4xiaoli"],
  6. ["id" => 5, "age" => 24, "name" => "5xiaoli"],
  7. ["id" => 6, "age" => 25, "name" => "6xiaoli"],
  8. );
  9. $ret = $collection->insertMany($data);
  10. # 返回插入id
  11. var_dump($ret->getInsertedIds());

</>复制代码

  1. 更新一条

</>复制代码

  1. $ret = $collection->updateOne(array("id" => 2), array("$set" => array("age" => 56)));

</>复制代码

  1. 更新多条

</>复制代码

  1. $ret = $collection->updateMany(array("id" => ["$gt" => 1]), array("$set" => array("age" => 56, "name" => "x")));

</>复制代码

  1. 删除一条

</>复制代码

  1. $ret = $collection->deleteOne(array("id" => 2));

</>复制代码

  1. 删除多条

</>复制代码

  1. $collection->deleteMany(array("id" => array("$in" => array(1, 2))));

</>复制代码

  1. 聚合

</>复制代码

  1. $ops = [
  2. [
  3. "$match" =>["type"=>["$in"=>[2,4]]]
  4. ],
  5. [
  6. "$sort" => ["list.create_time" => -1] //sort顺序不能变,否则会造成排序混乱,注意先排序再分页
  7. ],
  8. [
  9. "$skip" => 0
  10. ],
  11. [
  12. "$limit" => 20000
  13. ],
  14. ];
  15. $data = $collection->aggregate($ops);
  16. foreach ($data as $document)
  17. {
  18. var_dump($document);
  19. }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29397.html

相关文章

  • 推荐一个php7+ mongodb三方

    摘要:由于项目需要,把项目升级到了。但是升级了之后发现扩展不能用了。以上只支持扩展了。而扩展的驱动使用起来比扩展显得很复杂,啰嗦。终于找到了一个比较简洁的类。项目地址因为项目是国外友人贡献的。这里整理了一些常用的方法。 由于项目需要,把项目升级到了php7。但是升级了之后发现mongo扩展不能用了。php7.0以上只支持mongodb扩展了。而mongodb扩展的驱动使用起来比monmgo扩...

    Worktile 评论0 收藏0
  • 升级PHP7 jenssegers/mongodb expected to be a referen

    摘要:上的扩展有两个,都是官方出品的,一个叫,一个是,前者已经被官方废弃,不再提供稳定的更新,官方推荐使用后者,并且后者是支持的。在上搜索即可找到,也可以通过安装。使用作为中间件,不用修改现有代码。 pecl上的mongodb扩展有两个,都是官方出品的,一个叫mongo,一个是mongodb,前者已经被官方废弃,不再提供稳定的更新,官方推荐使用后者,并且后者是支持php7的。在pecl上搜索...

    BicycleWarrior 评论0 收藏0
  • 升级PHP7 jenssegers/mongodb expected to be a referen

    摘要:上的扩展有两个,都是官方出品的,一个叫,一个是,前者已经被官方废弃,不再提供稳定的更新,官方推荐使用后者,并且后者是支持的。在上搜索即可找到,也可以通过安装。使用作为中间件,不用修改现有代码。 pecl上的mongodb扩展有两个,都是官方出品的,一个叫mongo,一个是mongodb,前者已经被官方废弃,不再提供稳定的更新,官方推荐使用后者,并且后者是支持php7的。在pecl上搜索...

    tangr206 评论0 收藏0
  • PHP新手开发者的路线建议

    摘要:年开发者应该熟练使用,并且知道版本更新内容。对开发和运维人员来说,最希望的就是一次性创建或配置,可以在任意地方正常运行。是标准规范,是开发的实践标准。对开发者来说语言推荐和,全栈的选择非常多,推荐热门的 前言 在前天(2018-08-02)已经发布了PHP 7.3.0.beta1 Released 如果你还没有使用 PHP7 ,那真的很遗憾。2018年PHP开发者应该熟练使用 PHP7...

    klinson 评论0 收藏0
  • 升级PHP7操作MongoDB

    摘要:在及以前,官方提供了两个扩展,和,其中是对以等几个核心类为基础的类群进行操作,封装得很方便,所以基本上都会选择扩展。这种想法很违背简化操作带来的语法问题而专注逻辑优化的思路。 前言 使用 PHP+MongoDB 的用户很多,因为 MongoDB 对非结构化数据的存储很方便。在 PHP5 及以前,官方提供了两个扩展,Mongo 和 MongoDB,其中 Mongo 是对以 MongoCl...

    hizengzeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<