2013-04-22 103 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