【问题标题】:php mongodb aggregation (assertion 13111 error)php mongodb聚合(断言13111错误)
【发布时间】:2012-09-12 23:42:12
【问题描述】:

我正在尝试使用 php 中的新 mongodb 聚合框架。

我在 OSX Mountain Lion 上使用 mongod v2.2、php 5.3.13 和 mongodb pecl 库 v1.3.0beta2

我在门口跌跌撞撞......

我从 php 文档页面中提取了一个示例并将其缩减为...

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

当我查看页面时,我的 mongod 上出现错误...

断言 13111::字段类型错误(管道)3 != 4

我一辈子都看不出代码有什么问题。

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

【问题讨论】:

    标签: php mongodb aggregation-framework mongodb-php


    【解决方案1】:

    这听起来可能很愚蠢,我知道MongoCollection::aggregate docs 说该方法接受多个参数作为管道的步骤,但我设法完成这项工作的唯一方法是发出一个包含所有管道步骤,如下所示:

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

    我希望这会有所帮助。

    【讨论】:

    • 您的回答帮助我消除了错误 3!=4。但是,我现在坚持使用 Pipeline::run(): unrecognized pipeline op "$max 。我的代码看起来像:$max_user_no = $collection->aggregate(array(array('$max'=>'user_no')));。有什么线索吗?谢谢。
    • 我遇到了完全相同的问题。不支持 $max/$min 吗?
    • Max/min 用于group 内使用,请查看the docs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2019-07-20
    • 2014-01-30
    • 2017-08-18
    • 1970-01-01
    相关资源
    最近更新 更多