用PHP实现Mongo映射Reduce

用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; 我

我是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;
我该怎么做呢?我已经在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
}