我的查询存在问题:
我想
使用SUM“amount”和GROUP BY“user_id”
选择“user_info”
我正在使用Laravel 5和 jenssegers / laravel-mongodb
非常感谢你。
答案 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")
)
)
));
});