Стадия $bucket в aggregation pipeline MongoDB группирует документы в определённые диапазоны — называемые бакетами — на основе значений указанного поля.
Ты определяешь явные границы как массив значений. Каждый бакет охватывает диапазон от одной границы до (но не включая) следующей. Основные параметры включают:
groupBy — поле или выражение для вычисленияboundaries — массив граничных значений, определяющих диапазон каждого бакетаdefault — необязательная метка для документов, которые выходят за пределы всех определённых границoutput — определяет, что вычислять для каждого бакета (например, count, sum){
$bucket: {
groupBy: "$age",
boundaries: [0, 18, 35, 60, 100],
default: "Other",
output: { count: { $sum: 1 } }
}
}
Все документы должны иметь значение, которое подходит под определённые границы, или должен быть указан бакет default — в противном случае запрос вернёт ошибку. Для динамического размера бакетов рассмотри использование $bucketAuto, которая автоматически определяет диапазоны границ на основе распределения данных.
Этап $bucket требует, чтобы все документы имели значения в пределах определённых границ, или ты должен указать default бакет, чтобы избежать ошибок в запросе.
Новый — ещё не проверен сообществом
Вы