用PHP实现Mongo映射Reduce
我是mongo的新手,我正在尝试计算“代码”列表的条目数 例如 “代码”字段中的数据 我正在尝试的想法是如何实现MySQL的等效功能:用PHP实现Mongo映射Reduce,php,mongodb,mapreduce,Php,Mongodb,Mapreduce,我是mongo的新手,我正在尝试计算“代码”列表的条目数 例如 “代码”字段中的数据 我正在尝试的想法是如何实现MySQL的等效功能: select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE 因此,它返回: asd 2 fgh 1 忽略jkl的统计数据 鉴于以下出发点: $db = $connection->$database; $collection = $db->$table; 我
select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE
因此,它返回:
asd 2
fgh 1
忽略jkl的统计数据
鉴于以下出发点:
$db = $connection->$database;
$collection = $db->$table;
我该怎么做呢?我已经在mongo的map/reduce上读过了,但目前这对我来说没有多大意义
如果您能提供一些指导,我们将不胜感激。您可以使用Map Reduce,也可以使用聚合框架,这对于SQL人员来说可能更有意义:
$collection->aggregate(array(
array('$match' => array('CODE' => array('$in' => array('asd','fgh')))),
array('$group' => array('_id' => '$CODE', 'count' => array('$sum' => 1)))
));
这类似于:
select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE
并将返回:
{
{_id: asd, count: 2},
//next document
}
作为参考,您可以通读文档并查看此处的示例:谢谢您的帮助,让它正常工作!我唯一需要更改的是:将数组('$group'=>array('$id'=>CODE',count'=>array('$sum'=>1))更改为数组('$group'=>array('$id'=>CODE',count'=>array('$sum'=>1)))@CharlieSmith Ops是的,在那里犯了一个错误:)@Sammaye为什么你不纠正答案中的错误呢?@AsyaKamsky因为OP已经找到了解决方法,但好的,我会编辑
{
{_id: asd, count: 2},
//next document
}