选择sum列和Mongodb和Laravel分组

时间:2016-06-16 05:23:20

标签: php mongodb laravel aggregation-framework jenssegers-mongodb

我的查询存在问题:

enter image description here

我想

  

使用SUM“amount”和GROUP BY“user_id”

选择“user_info”

我正在使用Laravel 5和 jenssegers / laravel-mongodb

非常感谢你。

2 个答案:

答案 0 :(得分:1)

http://laravel.io/forum/10-05-2014-raw-select-using-jenssegers-laravel-mongodb

检查上面的链接或在我写的时候使用它。

<强> $total = DB::table('user_info')->sum('amount')->groupBy('user_id')->get();

答案 1 :(得分:1)

为了获得更好的性能,请使用底层MongoDB驱动程序的聚合框架方法,因为它使用MongoDB服务器上的本机代码,而不是基本上包含mapReduce方法的.groupBy()方法。

考虑以下聚合操作,该操作使用 $group 管道和 $sum 运算符进行总和聚合:

db.collectionName.aggregate([
    {
        "$group": {
            "_id": "$user_id",
            "user_info": { "$first": "$user_info" },
            "total": { "$sum": "$amount" }
        }
    }
]);

等效的Laravel示例实现:

$postedJobs = DB::collection('collectionName')->raw(function($collection) {
    return $collection->aggregate(array(
        array(
            "$group" => array(
                "_id" => "$user_id",
                "user_info" => array("$first" => "$user_info")
                "total" => array("$sum" => "$amount")
            )
        )   
    ));
});