天天看點

MONGODB::COMMAND與PHP

最近用mongoDB做了一個類似mysql中group by的實做:

一個collection,裡面結構為:

節點 id :某物品Id

節點 date :該物品購買日期

節點 num : 該物品在該天的購買次數

裡面的記錄類似于:

array(’id’=>12345,’date’=>’2010-08-26′,’num’=>12)

array(’id’=>54321,’date’=>’2010-08-26′,’num’=>2)

array(’id’=>12345,’date’=>’2010-08-25′,’num’=>1)

array(’id’=>23456,’date’=>’2010-08-26′,’num’=>6)

如果我要查詢每個物品一共被賣出去多少,mysql中我們會這樣寫:SELECT `id`,sum(num) as total FROM `tablename`  GROUP BY `id`;

那麼在mongo中怎麼做呢?

可以用 MongoDB::command來做:

$mdb = $mo->mydb;

$command = array(

‘group’=>array(

‘ns’ => ‘tmp_token_stat’,

‘key’=>array(’id’=>true),

‘$reduce’ => ‘function (obj, prev) { prev.sum += obj.num;}’,

‘initial’ => array(’sum’ => 0),

),

);

$rs = $mdb->command($command);

mongoDB的官方手冊在:http://www.mongodb.org/display/DOCS/Aggregation

php的官方手冊在:http://www.php.net/manual/en/mongodb.command.php

繼續閱讀