【问题标题】:SUM() in Mongodb? Issue with Query?Mongodb中的SUM()?查询问题?
【发布时间】:2013-07-19 03:55:11
【问题描述】:

我正在尝试从具有 SUM() 的 SQL 编写 PHP (Mongo) 查询,但我不确定我的语法是否正确。有人能启发我吗?

SQL:

$cmd = "SELECT SUM(m_length) FROM pkt_tbl WHERE m_time>=" . $time. " AND m_buffer_latency<=" . $time;

MongoDB 查询:

    $find_projection= aggregate(array('$group'=>array('$sum'=>'$m_length')));
    $result = $table -> command($find_projection);

我可以使用 array_sum 是 $result 还是在这种情况下我可以使用 $SUM (Aggregate)。任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: php sql mongodb


    【解决方案1】:

    你应该试试aggregation

    php这个代码可能对你有帮助,

    <?php
        $m = new Mongo;
        $c = $m->selectDB("test")->selectCollection("zips");
    
        $out = $c->aggregate(array(
                '$group' => array(
                    '_id' => '$state',
                   'totalPop' => array('$sum' => '$pop')
                )
            ),
            array(
                '$match' => array('totalPop' => array('$gte' => 10*1000*1000))
            )
        );
    
        var_dump($out);
    ?>
    

    Mongocollection Aggregate

    【讨论】:

    • 感谢您的意见。任何有关我的查询的建议将不胜感激。你能检查我的查询吗?我在 $result 中使用了 array_sum,我可以这样实现吗?
    • array_sum 得到一个 array as a parametercalculate the sum 就像 array_sum(array(2,4,8,6)); 但检查你在其中传递了什么?将array('m_length' =&gt; 1) 传递给array_sum 有意义吗?阅读此php.net/manual/en/function.array-sum.php
    • hmm 我认为传递 $find_projectionarray('m_length'=&gt;1 将被视为一个数组(因为它是 array()) 。你能告诉我如何更改我的查询吗?
    • 好的。我尝试使用聚合,但仍然没有解决问题。有人可以检查我的语法吗? $find_projection= aggregate(array('$group'=&gt;array('$sum'=&gt;'$m_length')));$result = $table -&gt; command($find_projection)
    【解决方案2】:
    $result = $table->aggregate(
    array('$match' => array(
    'm_time' => array('$gte' => $max),
    'm_buffer_latency' => array('$lte' => $max),
    )),
    array('$group' => array(
    '_id' => true,
    'sum_length' => array('$sum' => '$m_length')
    ))
    ); 
    

    这一切都解决了

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      相关资源
      最近更新 更多