У меня есть объекты следующего типа:
"name":string,
"title": string,
"body": string
Мне нужно выполнить запрос агрегации, который ищет объекты, содержащие определенный текст в одном из полей. Результаты должны быть сгруппированы по следующим правилам:
- Первые объекты, в названии которых содержится текст.
- Затем объекты, заголовок которых содержит текст.
- Затем объекты, в теле которых содержится текст.
Первый этап агрегирования выглядит следующим образом:
"$match" : {
"$or" : [
{
"name" : /.*hellow world.*/i
},
{
"title" : /.*hellow world.*/i
},
{
"body" : /.*hellow world.*/i
}
]
}
- Также я использую пейджинг.
- Запрос запрашивается с сервера node.js.
Моя первая проблема в том, что я до сих пор не выяснил, возможно ли вообще выполнить такую группировку в конвейере агрегации.
Кроме того, я пытаюсь выполнить три запроса, сначала чтобы получить результаты, в которых их имя содержит термин, затем те, которые имеют их заголовок и затем тело. Используя этот метод, я столкнулся с несколькими другими проблемами: три запроса к серверу не так эффективны, а также управление подкачкой страниц усложняет весь процесс.