PHP实现MongoDB GROUP BY与SUM聚合查询时遇语法错误求助
问题解决:PHP MongoDB聚合查询语法错误
错误原因
你写的代码用了JavaScript的对象语法({}),但PHP中定义关联数组必须用[](PHP 5.4+)或array(),这是导致语法报错的直接原因。
修正后的代码
对应你需求的SQL(按date分组、统计visits总和、筛选name='John'),正确的PHP代码如下:
$data = $collection->aggregate([ ['$match' => ['name' => 'John']], ['$group' => ['_id' => '$date', 'total_visits' => ['$sum' => '$visits']]] ]);
代码说明
'$match'对应SQL中的WHERE name = 'John',用于筛选符合条件的文档'$group'对应SQL中的GROUP BY date:'_id' => '$date'指定分组字段为date(MongoDB聚合分组必须通过_id定义)'total_visits' => ['$sum' => '$visits']对应SQL中的SUM(visits),统计每组的访问量总和
另外注意:你原来的SQL写了SELECT SUM(visits),*,但MongoDB聚合分组后无法直接返回所有字段(因为分组是聚合操作,每组是聚合结果而非原文档),如果需要额外字段,需要根据业务需求调整聚合阶段(比如使用$project或$addToSet等操作符)。
内容的提问来源于stack exchange,提问作者Łukasz Trześniewski
相关产品推荐
相关产品推荐

