У меня есть существующий отчет с использованием структуры агрегации MongoDB, и я бы хотел добавить к нему новое поле - количество всех документов, где одно из числовых полей меньше заданного значения.Конвейер агрегации MongoDB: подсчет документов с полем меньше значения?
В моих документах есть поле длины, которое я уже вычисляю в среднем, поэтому в дополнение к этому я бы хотел, чтобы количество документов было меньше определенного числа.
Мой текущий трубопровод агрегация очень прост:
db.streams.aggregate([
{ $match: { track_id: "ecb96af4537d4263b83f5675dbcc0388" }},
{ $group: { _id: "$source", listens: { $sum: 1 } } }
])
Я попытался с помощью $sum
и $lt
, но счетчик всегда равен 0. Я предполагаю, что это происходит потому, что $sum
только считается, когда возвращается 1
, но $lt
true
. Это то, что я пробовал:
db.streams.aggregate([{
$match: {
track_id: "ecb96af4537d4263b83f5675dadd0388"
}
}, {
$group: {
_id: "$source",
listens: {
$sum: 1
},
skips: {
$sum: {
$lt: ["$length", 1000]
}
}
}
}, ])
Кто-нибудь знает, как я могу добиться этого? Спасибо!
Perfect, спасибо большим! –