Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel控制器中访问MongoDB游标中返回的数据?_Php_Mongodb_Laravel_Jenssegers Mongodb - Fatal编程技术网

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

Php 如何在laravel控制器中访问MongoDB游标中返回的数据?,php,mongodb,laravel,jenssegers-mongodb,Php,Mongodb,Laravel,Jenssegers Mongodb,我使用的是Laravel5.6,MongoDB使用的是 在这里,我想通过一个方法使用group获得总计数,就像我们在Mysql中所做的那样 select latitude,longitude,count(*) as `count` from event_logger group by latitude,longitude 根据包中的文档,在MongoDB中,我们不能像在eloquent中那样简单地使用聚合函数,而是必须使用带有MongoDB语法的raw查询 public static func

我使用的是Laravel5.6,MongoDB使用的是

在这里,我想通过一个方法使用group获得总计数,就像我们在Mysql中所做的那样

select latitude,longitude,count(*) as `count` from event_logger group by latitude,longitude
根据包中的文档,在MongoDB中,我们不能像在eloquent中那样简单地使用聚合函数,而是必须使用带有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(dump and die)时,我得到的结果是
游标{#586}
。 那么基本上如何将游标中的数据获取/访问到我的laravel应用程序中呢

foreach ($q as $row) {
    //$row contains data for every row
 }
其中q是光标。

使用

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

其中q是光标。

我也在使用这个包作为项目。我使用的是返回聚合数据的原始闭包方法

例如:

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


你能试试上面的代码吗?

我也在用这个软件包做项目。我使用的是返回聚合数据的原始闭包方法

例如:

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

你能试试上面的代码吗