У меня есть некоторый массив в БД. С полем 'rate' (значения: 0 - 100), projectId et c.
Мне нужен результат как:
{
totalCount: 33,
suspicious: [...],
other: [...],
totalSuspiciousCount: 22,
totalOtherCount: 11,
}
подозрительно - это массив из 10 элементов или меньше с rate> 50
other - это массив из 10 или менее элементов со скоростью <= 50 </p>
Я создал несколько агрегированных запросов, но, думаю, есть способ их улучшить:
sails.models.observable.aggregate([
{ $match: { projectId: ObjectId(projectId) } },
{ $sort: { suspiciousRate: -1 } },
{
$facet: {
totalCount: [{ $count: 'count' }],
suspicious: [{ $match: { rate: { $gt: 50 } } }, { $limit: 10 }],
other: [{ $match: { rate: { $lte: 50 } } }, { $limit: 10 }],
totalSuspiciousCount: [{ $match: { rate: { $lte: 50 } } }, { $count: 'count' }],
totalOtherCount: [{ $match: { rate: { $gt: 50 } } }, { $count: 'count' }]
}
}
])