学习记录9----php mongodb 查询and和or
//数据实例
//$data=[
// [
// 'name'=>'张三',
// 'age'=>12+rand(1,99),
// 'like'=>'刷视频',
// 'sex'=>'男'
// ],
// [
// 'name'=>'李四',
// 'age'=>5+rand(1,99),
// 'like'=>'看小说',
// 'sex'=>'男'
// ]
// ];
//创建连接,本案例是部署在docker上面,镜像名称是mongo,故连接的host是mongo
$manager=new \MongoDB\Driver\Manager('mongodb://admin:admin@mongo:27017/admin');
//男生中 姓名等于张三或者年龄是20岁或者喜欢刷视频的人
$fiter=[
'$and'=>[
['$or'=>[
['name' => '张三'],
['age'=>'20'],
['like'=>'刷视频']
]],
['sex' => '男']
]
];
$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 协议》,转载必须注明作者和本文链接