search— условие выборки.- Условие по свойству в неопределенной вложенности
search[prop1..prop3]=value
- Условие по свойству в неопределенной вложенности
Условие по свойству в неопределенной вложенности. Применяется для выборки по графу. Например, выбрать все подразделы в разделе "Спорт". Выбрать пользоваталей, которые через своих друзей имеют связь с неким пользователем.
// Поиск по friends.surname, friends.friends.surname и так далее
GET /users?search[friends...surname]=Petrov
Сервер понимает, что свойство friends относится к выбираемым объектам - пользователям.
Так как далее следуют две точки, то выполняется поиск пользователей по surname="Petrov".
Далее выполнется условие по графу - отношение friends должно связываться через неопределенноё
количество связей (ребер) до любого из найденных пользователей по surname.
В примере ниже указываем условие на отношение club, которое имеет рекурсивное свойство parent.
Ghb сверяется name у клуба и рекурсивно у его родителей. Запись свойства с вопросом parent?
означает, что его в пути на свойство может не быть.
// Поиск по player.club.name, player.club.parent.name, player.club.parent.parent.name
GET /players?search[club.parent?..name]=ЦСКА
Сам поиск на сервере использует специальные индексы, чтобы не перебирать все записи. Сначала по схеме определяется, какого типа отношение friends. Выполняется поиск объекта соответствующего типа с условием на surname. Потом поиск объектов, которые имеют графовую связь на найденных объект.