2012-09-12 45 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