MongoDB 4.1 TotalRecords и данные в совокупности - PullRequest
0 голосов
/ 02 февраля 2020

Я столкнулся с проблемой, потому что я новичок в понедельник go, но я хочу ее решить.

У меня есть разные коллекции, которые я объединяю с поиском, который работает отлично. Но теперь я хочу, чтобы в заголовке моего результата была сумма всех записей.

Моя первая проблема сейчас заключается в том, что мое отношение актера является массивом, а вторая проблема заключается в том, что я не знаю, как разделите TotalCount и данные друг от друга в ответе.

Результат должен выглядеть следующим образом:

{
 "totalRecords": 12,
 "itemsPerPage": 10,

 "docs": {
    "_id": "7429437848adssk",
    "title": "abc"
    "actors" [
         {"name": "Mr.x" },
         {"name": "Mrs.Y"}
     ]
 }
}

Я решил свою агрегацию без общего подсчета со следующими этапами:

  1. раскрутка актеров
  2. поиск актеров
  3. группа с $ first в первой коллекции и $ addToSet актеров

Результат моего ответа без подсчета: как и ожидалось, но если я добавлю $ count в группу, он подсчитает актеров, а в 1 документе с 2 акторами он подсчитает 2. Но я хочу, чтобы счетчик каждого документа.

Может ли кто-нибудь предоставить мне простой рабочий пример по моей проблеме?

1 Ответ

1 голос
/ 02 февраля 2020

Вам нужно добавить эти 3 шага в конце вашей агрегации

{
  $facet: {
    totalRecords: [
      {
        $count: "totalRecords"
      }
    ],
    docs: [
      {
      $match: {}
      }
    ]
  }
},
{
  $unwind: "$docs"
},
{
  $addFields: {
    totalRecords: {
      $arrayElemAt: [
        "$totalRecords.totalRecords",
        0
      ]
    }
  }
}

MongoPlayground

...