Как получить доступ к данным, возвращенным в курсоре MongoDB в контроллере laravel? - PullRequest
0 голосов
/ 06 октября 2018

Я использую Laravel 5.6 с MongoDB, используя Jenssegers Package

Здесь я хочу получить общее количество, используя группу по методу, как мы делаем в Mysql, например.

select latitude,longitude,count(*) as `count` from event_logger group by latitude,longitude

Согласно документации пакета, в MongoDB мы не можем использовать агрегатные функции просто, как в eloquent, но вместо этого мы должны использовать raw запрос с синтаксисом MongoDB.

public static function getUsersByTypeLogin()
{

        $q = self::raw()->aggregate(
            [
                array(
                    '$group'=>array(
                        '_id'=>array(
                            'lat'=>'$latitude',
                            'long'=>'$longitude'
                        ),
                        'count'=>array('$sum'=>1)
                    )
                )
            ]
        );

        dd($q);
}

Когда я делаю дд (бросай и умирай), я получаю Cursor {#586} в результате.Так в принципе, как получить / получить доступ к данным в курсоре в моем приложении Laravel?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Я тоже использую этот пакет в качестве проекта.Я использую необработанный метод закрытия, который возвращает данные агрегации.

Например:

$data = YourModel::raw(function($collection)
{
    return $collection->aggregate(
        [
            array(
                '$group'=>array(
                    '_id'=>array(
                        'lat'=>'$latitude',
                        'long'=>'$longitude'
                    ),
                    'count'=>array('$sum'=>1)
                )
            )
        ]
    );
});

$data должны быть вашими данными.

Можете ли вы попробовать приведенные выше коды?.

0 голосов
/ 28 декабря 2018

Используйте

foreach ($q as $row) {
    //$row contains data for every row
 }

, где q - курсор.

...