Я написал запрос агрегации MongoDB, который использует несколько этапов.В конце я хотел бы, чтобы запрос возвратил мои данные в следующем формате:
{
data: // Array of the matching documents here
count: // The total count of all the documents, including those that are skipped and limited.
}
Я собираюсь использовать функции пропуска и ограничения, чтобы в конечном итоге сократить результаты.Тем не менее, я хотел бы знать количество документов, возвращаемых до Я пропускаю и ограничиваю их.Предположительно, этап конвейера должен был бы произойти где-то после этапа $match
, но до этапов $skip
и $limit
.
Вот запрос, который я сейчас написал (он находится в маршруте express.jsВот почему я использую так много переменных:
const {
minDate,
maxDate,
filter, // Text to search
filterTarget, // Row to search for text
sortBy, // Row to sort by
sortOrder, // 1 or -1
skip, // rowsPerPage * pageNumber
rowsPerPage, // Limit value
} = req.query;
db[source].aggregate([
{
$match: {
date: {
$gt: minDate, // Filter out by time frame...
$lt: maxDate
}
}
},
{
$match: {
[filterTarget]: searchTerm // Match search query....
}
},
{
$sort: {
[sortBy]: sortOrder // Sort by date...
}
},
{
$skip: skip // Skip the first X number of doucuments...
},
{
$limit: rowsPerPage
},
]);
Спасибо за вашу помощь!