2013-04-22 85 views
0

我是mongo的新手,我试图计算“代码”列表的条目数Mongo Map利用PHP减少

例如,

在一个名为“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统计

给出下面的起点

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

我将如何去了解这一点,我已经阅读了关于地图/减少蒙戈,但目前它不是赚了很多道理给我。

获得此项工作的一些指导将不胜感激。

回答

2

你可以使用地图缩小或者你可以使用聚合框架,可能更有意义此处查看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/

+0

谢谢你的帮助,让它工作! 我只需要改变: array('$ group'=> array('_ id'=>'CODE','count'=> array('$ sum'=> 1))) 到 阵列( '$组'=>数组( '_ ID'=> '$ CODE', '计数'=>数组( '$总和'=> 1))) – 2013-04-23 09:18:11

+0

@CharlieSmith行动耶由错误:) – Sammaye 2013-04-23 09:22:23

+0

@Sammaye你为什么不解决答案中的错误呢? – 2013-04-25 03:52:17