Монго Аггс и общее количество - PullRequest
0 голосов
/ 28 июня 2018

У меня возникли проблемы с mongodb, чтобы выполнить запрос к коллекции, чтобы отфильтровать все документы, разбить их на страницы (с пропуском и ограничением) и получить общее число, подобное этому

Документ чата выглядит так:

{
"_id": "c603db3e75ec76f5a4dff559bc525e29",
"members": [{
  "user": "5b2b0d5135cfd60185034bf6",
  "status": "creator"
}, {
  "user": "5b31dc3f88284a009fa847e5",
  "status": "member"
}],
"messages": [{
  "_id": 2,
  "from": "5b2b0d5135cfd60185034bf6",
  "parse_mode": "none",
  "text": "fffasdfsa",
  "attachment": null,
  "time": 1529995684119,
  "type": "text"
},
{...},
{...}
]}

И я бы хотел получить такой результат

{
  total_count: 3,
  chats: [{
    "_id": "c603db3e75ec76f5a4dff559bc525e29",
    "members": [{
      "user": "5b2b0d5135cfd60185034bf6",
      "status": "creator"
    }, {
      "user": "5b31dc3f88284a009fa847e5",
      "status": "member"
    }],
    "creator": {
      "user": "5b2b0d5135cfd60185034bf6",
      "status": "creator"
    },
    "lastMessage": {
      "_id": 4,
      "from": "5b2b0d5135cfd60185034bf6",
      "parse_mode": "none",
      "text": "aasdas",
      "attachment": null,
      "time": 1529995698736,
      "type": "text"
    },
    "messages": [{
      "_id": 2,
      "from": "5b2b0d5135cfd60185034bf6",
      "parse_mode": "none",
      "text": "fffasdfsa",
      "attachment": null,
      "time": 1529995684119,
      "type": "text"
    }, {
      "_id": 3,
      "from": "5b2b0d5135cfd60185034bf6",
      "parse_mode": "none",
      "text": "weqw",
      "attachment": null,
      "time": 1529995690015,
      "type": "text"
    }, {
      "_id": 4,
      "from": "5b2b0d5135cfd60185034bf6",
      "parse_mode": "none",
      "text": "aasdas",
      "attachment": null,
      "time": 1529995698736,
      "type": "text"
    }]
  },
  {...},
  {...}
  ]
}

Мой запрос

collection<DbChat>('chats').aggregate([
            {
                $match: {
                    messages: { $exists: true }
                }
            },
            { $unwind: '$messages' },
            { $unwind: '$members' },
            { $group: {_id: '$_id', members:  { $push: '$members' },  member:  { $last: '$members' }, creator:  { $first: '$members' }, messages: {$push: '$messages' } , lastMessage: {$last: '$messages'}}},
            { $sort: this.sort},
        ]}.skip(skip).limit(size)

с помощью этого запроса я не получаю total_count. Я много раз пробовал, но не нашел способа получить результат и количество в одном запросе.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...