我正在使用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}
的结果。
那么,基本上如何在游标中获取/访问游标中的数据?
答案 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是光标。