php monhodb,推荐一个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 \MongoDB\Client($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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值