Mongo Map使用PHP减少

时间:2013-04-22 07:36:13

标签: php mongodb mapreduce

我是mongo的新手,我正在尝试计算"代码列表的条目数"

例如

名为" CODE"

的字段中的数据
asd
fgh
jkl
asd

我想要解决的想法是如何做相当于MySQL的事情:

select count(id) from table where (CODE='asd' or CODE='fgh') group by CODE

以便它返回:

asd 2
fgh 1

并忽略jkl stats

给出以下起点:

$db = $connection->$database;
$collection = $db->$table;

我将如何解决这个问题,我已经阅读了mongo上的map / reduce,但目前它对我来说并没有多大意义。

非常感谢为此工作提供的一些指导。

1 个答案:

答案 0 :(得分:2)

您可以使用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
}

作为参考,您可以阅读文档并查看此处的示例:http://docs.mongodb.org/manual/core/aggregation/