2012-09-12 73 views
3

我試圖從php使用新的mongodb聚合框架。php mongodb聚合(斷言13111錯誤)

我使用的mongod v2.2中,PHP 5.3.13,和MongoDB PECL庫v1.3.0beta2上OSX山獅

我跌跌撞撞就在門口......

我「已經採取的從PHP文檔頁面的例子之一,並把它砍下來......

$m = new Mongo; 
$c = $m->selectDB("test")->selectCollection("zips"); 
$out = $c->aggregate(array('$group' => array('_id' => '$state'))); 
var_dump($out); 

當我瀏覽網頁我對我的mongod的得到一個錯誤......

Assertion 13111::字段(流水線)的錯誤類型3!= 4

我不能爲我的生活看到任何代碼錯誤。

如果我在mongo控制檯中運行db.zips.aggregate({$group : {'_id': "$state"}})它工作正常。

回答

1

這可能聽起來很愚蠢,我知道MongoCollection::aggregate docs說該方法接受多個參數作爲管道的步驟,但我設法做到這一點的唯一方法是發出一個包含所有管道的參數步驟如下:

$out = $c->aggregate(array(
    array(
    '$group' => array('_id' => '$state') 
    ) 
); 

我希望這有助於。

+1

你的回答幫我刪除了錯誤3!= 4。然而,我現在堅持使用'Pipeline :: run():無法識別的管道op「$ max'。我的代碼如下所示:'$ max_user_no = $ collection-> aggregate(array('$ max'=>'user_no' )));'。任何線索?謝謝。 – davneet

+0

我有完全相同的問題。是不是支持$ max/$ min? – greatwitenorth

+0

最大值/最小值是在'group'內使用的,看看[文檔] (http://docs.mongodb.org/manual/reference/aggregation/group/#_S_group)。 – Roberto