学习记录7----php mongodb

php操作mongodb的查询

//数据实例
//$data=[
//   [
//       'name'=>'张三',
//       'age'=>12+rand(1,99),
//       'like'=>'刷视频'
//    ],
//    [
//        'name'=>'李四',
//        'age'=>5+rand(1,99),
//        'like'=>'看小说'
//     ]
// ];

//创建连接,本案例是部署在docker上面,镜像名称是mongo,故连接的host是mongo
$manager=new \MongoDB\Driver\Manager('mongodb://admin:admin@mongo:27017/admin');
$filter=[
    'age'=>['$gt'=>0]//年龄大于0
];
$sort='total_age';
$params = [
    'aggregate' => 'test',//文档名
    'pipeline' => [
         ['$match' => $filter],
         [
            '$group' => [
                '_id' => ['like' => '$like'],//通过like字段分组
                'total_age'=>['$sum'=>'$age'],//年龄和
                'avg_age'=>['$avg'=>'$age'],//平均年龄
                'total'=>['$sum'=>1]//人数
            ]
        ],
        [
            '$sort' => [
                $sort => 1,//总年龄排序
                '_id' => 1
            ]
        ],
        ['$limit'=>2],
        ['$skip'=>1]
    ],
    'allowDiskUse'=>true,
    'cursor' => new \stdClass
];
$command = new \MongoDB\Driver\Command($params);
//这里设置使用哪个数据库
$list = $manager->executeCommand('public_api',$command)->toArray();

foreach ($list as $v){
var_dump(Tools::object_to_array($v));
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!