【问题标题】:mongodb aggregation phpmongodb聚合php
【发布时间】:2012-07-02 16:45:34
【问题描述】:

我正在使用 mongodb 2.1 以及如何将此查询转换为 php

db.counter.aggregate([ 
 { $match:{ page_id:123456 }}, 
 { $group:{_id:"$page_id",total:{$sum:"$pageview"}} } 
 ]);

谢谢

【问题讨论】:

    标签: php mongodb mongodb-query aggregation-framework


    【解决方案1】:

    您可以使用 PHP 中的“command()”方法将聚合框架作为数据库命令运行。您的示例查询的精确语法是:

       $conn = new Mongo("localhost:$port");
       $db = $conn->test;
    
       $result = $db->command (
                array( 
                    "aggregate" => "counter",
                    "pipeline" => 
                        array( 
                            array( '$match' => array( 'page_id' => 123456 )),
                            array( '$group' => array( "_id" => '$page_id',
                                        'total' => array( '$sum' => '$pageview')  
                                    )
                                )
                        )
                )
            );
    

    【讨论】:

    • 在 1.3.0 mongo 驱动程序中添加了一个 aggregate() 助手。底层的command() 语法仍然有效:)。
    • 我也尝试过这样的查询。但它返回一个错误,上面写着异常:字段类型错误(聚合)3!= 2
    • @Alwin:这意味着您有语法错误。没有看到你的代码就无法知道它是什么。
    【解决方案2】:

    试试:

    $m = new MongoClient();
    $con = $m->selectDB("dbName")->selectCollection("counter");
    $cond = array(
        array('$match' => array('page_id' =>123456)),
        array(
            '$group' => array(
                '_id' => '$page_id',
               'total' => array('$sum' => '$pageview'),
            ),
        )
    );
    $out = $con->aggregate($cond);
    print_r($out);
    

    更多详情click here

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2012-05-10
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多