Нахождение нескольких последних значений в массиве - PullRequest
0 голосов
/ 03 июня 2019

Документ и объяснение

   "_id":"5cf54fdf146bd8a8e8002fb4",
   "id":2,
   "updated_at":"2019-06-03 16:51:16",
   "created_at":"2019-06-03T16:50:39.000Z",
   "field1":[  
      249,
      249
   ],
   "field2":[  
      310,
      310
   ],
   "evo":{  
      "evot01":[  
         222222,
         220318
      ],
      "evot02":[  
         3199,
         3199
      ],
      "evot03":[  
         686,
         686
      ],
      "evot04":[  
         1324,
         1324
      ]
   },
   "exp":{  
      "exp1":[  
         16394716,
         16394716
      ],
      "exp2":[  
         19567492,
         19567492
      ],
      "exp3":[  
         25616528,
         25616528
      ]
   },
   "power":[  
      55,
      57
   ],

}

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


Case

Создание списка из 5 лучших записей для evo.evot01, каждый пользователь может иметь различное количество значений внутри, поэтому я использую слайс, чтобы получить последний добавленный.


Вопрос

Возможно ли как-нибудь создать запрос, который включит в меня документ с «field1» и любой другой по моему выбору - может быть несколько: смассив топ-5 записей для каждой «категории», или он должен быть отдельным?

Возможные проблемы - настройки, моя попытка

агрегированный запрос в моем документе -«Найти во всех документах последнее значение в массиве», отсортировать его по убыванию и ограничить результат X »

[
                ['$project' => [
                    'evo1' => [
                        '$slice' => [
                            '$evo.evot01', -1
                        ]
                    ],
                    '_id' => '$id'
                ]
                ],
                ['$sort' =>
                    ['evo1' => -1]
                ],
                ['$limit'=>5]
            ],

Сначала я попытался сгладить результат $slice, но безуспешно, примержелаемый результат: https://imgur.com/a/6ClhU4x, но по-прежнему не хватает отображения результатов нескольких категорий.

Спасибо за любые подсказки - отказ от ответственности - я использую MongoDB в PHP laravel. Но я могу легко адаптировать raw mongoзапрос к моим потребностям.

...