资讯专栏INFORMATION COLUMN

推荐一个php7+ mongodb三方类

U2FsdGVkX1x / 2219人阅读

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

由于项目需要,把项目升级到了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://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元查看
<