mon goose количество запросов и возврат некоторых результатов из списка - PullRequest
0 голосов
/ 28 мая 2020

API выглядит так:

{
  list: [], // length should lower than 20
  total: 160 // for frontend pagination
}

вот мой код:

    const queryInstance = someModel.find(query)
    total = await queryInstance.countDocuments()
    list = await queryInstance.sort({ date: -1 }).skip(offset * pageSize).limit(pageSize * 1)
    return { total, list }

похоже, что первое ожидание меняет queryInstance, результат list равен total .

должен ли мой код выглядеть так:

   total = await someModel.find(query).countDocuments()
   list = await someModel.find(query).sort({ date: -1 }).skip(offset * pageSize).limit(pageSize * 1)

это запрос к базе данных дважды? я должен беспокоиться об этом?

1 Ответ

0 голосов
/ 28 мая 2020

Да, вы дважды запрашиваете базу данных. Что вы можете сделать, так это агрегат с $ match для вашего (запроса) и $ sortByCount (для подсчета и сортировки), а после этого вы можете сделать что-то вроде этого:

db.collection_name.aggregate([match,sortByCount,skip,limit])

https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/ https://docs.mongodb.com/manual/reference/operator/aggregation/match/ https://docs.mongodb.com/manual/reference/operator/aggregation/skip/ https://docs.mongodb.com/manual/reference/operator/aggregation/limit/

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