Я пытаюсь создать запрос агрегации в PHP SDK Parse, и я застрял в области «поиска», я видел пример JS по этому поводу, но он не работает в моем случае.
У меня есть таблица пользователей, которая содержит поле «Теги» типа Array, массив на самом деле представляет собой массив указателей, которые указывают на отдельный класс Tag.
Чего я пытаюсь достичьсостоит в том, чтобы перечислить наиболее популярные теги на основе их использования, поэтому в основном мне нужно запросить класс пользователей и сгруппировать теги, которые существуют в массиве, я уже достиг этого, но я застрял с поисковой частью, запрос в настоящее время возвращаетмассив тегов-указателей, я хочу получить объект этих указателей.
Вот что у меня есть в данный момент:
$query = new ParseQuery('_User');
$pipeline = [
'project' => ['tags' => 1],
'unwind' => '$tags',
'group' => [
'objectId' => '$tags.objectId',
'count' => ['$sum' => 1]
],
'sort' => [ 'count' => -1],
'limit' => 10,
];
try {
return $query->aggregate($pipeline);
} catch (ParseException $ex) {
return $ex->getMessage();
}
А вот фрагмент того, как выглядит коллекция _User:
{
"_id" : "5BuBVo2GD0",
"email" : "test@test.com",
"username" : "test@test.com",
"lastname" : "Doe",
"firstname" : "John",
"_created_at" : ISODate("2017-01-23T09:20:11.483+0000"),
"_updated_at" : ISODate("2019-02-15T02:48:30.684+0000"),
"tags" : [
{
"__type" : "Pointer",
"className" : "Tag",
"objectId" : "St2gzaFnTr"
},
{
"__type" : "Pointer",
"className" : "Tag",
"objectId" : "LSVxAy2o74"
}
],
"_p_country" : "Country$4SE8J4HRBi",
}
И коллекция тегов выглядит следующим образом:
{
"_id" : "St2gzaFnTr",
"name" : "Music",
"_created_at" : ISODate("2018-10-22T20:00:10.481+0000"),
"_updated_at" : ISODate("2018-10-22T20:00:10.481+0000")
}
Любая помощь будет признательна!
Заранее спасибо