Выберите столбец суммы и сгруппируйте их с помощью Mongodb и Laravel

У меня проблема с моим запросом:

я бы хотел

ВЫБЕРИТЕ "user_info" с SUM "сумма" и GROUP BY "user_id"

Я использую Laravel 5 и jenssegers/laravel-mongodb

Огромное спасибо.

2 ответа

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

проверьте ссылку выше или используйте это, как я пишу.

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

Для повышения производительности используйте методы структуры агрегации базового драйвера MongoDB, так как при этом используется собственный код на сервере MongoDB, а не .groupBy() методы, которые в основном обертывают методы mapReduce.

Рассмотрим следующую операцию агрегирования, которая использует $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")
            )
        )   
    ));
});
Другие вопросы по тегам