如何在laravel控制器中访问MongoDB游标中返回的数据?

时间:2018-10-06 09:25:06

标签: php mongodb laravel jenssegers-mongodb

我正在使用Jenssegers Package

将Laravel 5.6与MongoDB一起使用

在这里,我想像在Mysql中那样使用group by方法获得总数。

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

根据该软件包的文档,在MongoDB中,我们不能像雄辩中那样简单地使用聚合函数,而必须在MongoDB语法中使用 raw 查询。

public static function getUsersByTypeLogin()
{

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

        dd($q);
}

当我做dd(转储并死亡)时,得到Cursor {#586}的结果。 那么,基本上如何在游标中获取/访问游标中的数据?

2 个答案:

答案 0 :(得分:1)

我也在这个项目中使用这个包。我正在使用原始关闭方法返回聚合数据。

例如:

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

$data应该是您的数据。

您可以尝试上述代码吗?。

答案 1 :(得分:0)

使用

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

其中q是光标。