Монго - агрегирование общего количества результатов вместе с документами, НО ограничение диапазона? - PullRequest
1 голос
/ 12 апреля 2019

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

До сих пор я имел успех, используя 2 группы и в течение первой просто нажимая $$ ROOT для следующей группы, но проблема в том, что часть $ limit больше не применяетсяв качестве формы результата будет 1 документ со свойством, которое содержит ВСЕ результаты.

Пример:

 { $match: { $text: { $search: body.searchTerms } } },
    { $sort: { $score: { $meta: 'textScore' } } },
    { $group: { id_: null, resultsCount: { $sum: 1 }, documents: {  "$push": "$$ROOT"  } },
    {
      $group: {
        _id: '$site.UNID',
        title: { $first: '$title' },
      }
    },
    { $match: { score: { $gt: matchScore } } },
    { $limit: 20 },
    {
      $project: {
        UPRN: '$documents.UPRN',
        title: '$documents.title',
      }
    }

Запрос может быть не на 100% правильным, так как я потерял эту первоначальную версию - но проблема в том, что оператор $ limit работает с внутренними документами, а не скорневой результат.

...