- Я хочу объединить метаданные и метаданные для правильного отображения результата, как вы можете видеть, я использовал
$match
несколько раз, чтобы получить правильный результат после агрегирования. - Мне также нужно
total_pages
в метаданных, Как реализовать эту формулу Math.ceil(total_items/limit)
.
Примечание: Код работает правильно, но нужно оптимизировать лог c.
db.collection('cms_brands').aggregate([
{
$facet: {
data: [{ $match: {title:"clue brand"} }, { $skip: 0 }, { $limit: 10 }],
metadatax: [ { $count: "total" }, { $addFields: { page: 0 } }],
metadata: [ { $match: {title:"clue brand"} }, { $skip: 0 }, { $limit: 10 }, {$group: { _id: "$title", count: { $sum: 1 } }} ],
}
}
]).toArray()
.then((items) => { return { statusCode: 200, body: items }; })
.catch(err => {
console.log('=> an error occurred: ', err);
return { statusCode: 500, body: 'error' };
});
Фактический ответ:
[
{
"data": [
{
"_id": "5e91d2c4a3fda138bcdbfd82",
"title": "clue brand"
},
{
"_id": "5e91d2dea3fda138bcdbfd83",
"title": "clue brand"
}
],
"metadatax": [
{
"total": 3,
"page": 0
}
],
"metadata": [
{
"_id": "clue brand",
"count": 2
}
]
}
]
Ожидаемый ответ:
[
{
"data": [
{
"_id": "5e91d2c4a3fda138bcdbfd82",
"title": "clue brand"
},
{
"_id": "5e91d2dea3fda138bcdbfd83",
"title": "clue brand"
}
],
"metadata": [
{
"total": 3,
"page": 0,
"_id": "clue brand",
"count": 2
}
]
}
]