首页 > 解决方案 > 获取组和每个组的大小

问题描述

所以,我有一个 mongo 数据库填充(21k 个输入),其中包含操作(有 5 个不同的操作)id、时间等列。

我需要获取每个动作的名称,以及该动作发生了多少次。例如:USERPROPERTY_CHANGED - 755

我已经在这里尝试了Laravel Eloquent groupBy() 中的几乎所有内容,并且还返回了每个组的计数

然后我尝试制作另一个集合,我在其中输入字段一个,一个,然后获取它们,但我的迁移看起来像这样:

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class actionPopularity extends Migration
{
public function up()
{
    Schema::create('actionPopularity', function (Blueprint 
$collection) {
        $collection->Increments('id');
        $collection->string('action');
        $collection->integer('count');
    });
}
public function down()
{
    Schema::dropIfExists('actionPopularity');
}
}

但是这个生成的集合只有一个字段——id。

这是一种有效的方法(它表明它可以与数据库一起使用)

    Controller:

public function database_test()
{
 $actions = Action::groupBy('action')->get();

 return view('database_test',compact('actions'));
 }

看法:

  {{$actions}}

输出:

        [{"_id": 
{"action":"OBJECT_INSERT"},"action":"OBJECT_INSERT"}, 
        {"_id": 
{"action":"OBJECT_MODIFY"},"action":"OBJECT_MODIFY"}, 
       {"_id": 
        {"action":"null"},"action":"null"},{"_id": 

{"action":"USERPROPERTY_CHANGED"},"action":"USERPROPERTY_CHANGED"}, 
       {"_id":{"action":"OBJECT_DELETE"},"action":"OBJECT_DELETE"}]

最终我想得到两个数组,一个带有动作名称,另一个带有该动作被调用的次数,将其放入图表中。

标签: laravelmongodbmongodb-query

解决方案


推荐阅读