Я новичок в mongo и пытаюсь получить сумму общей суммы из моей коллекции mongo db под названием «транзакции», где «заплачено» верно, а «creationDate» - в месяц Сентябрь 2014 года, сгруппированы по дням.Mongo aggregation с агрегацией условных дат
В Postgres, я могу написать это как:
select to_char("creationDate", 'YYYY-MM') as "Month", sum(totalamount)
from transactions
where "creationDate" >= '2014-09-01'
and paid is true
group by "Month"
Однако, я не уверен, как добавить условия для CreationDate и уплачиваются в Монго. Я читал об условных агрегациях, но я не уверен, как заставить его работать на день и месяц даты, а также на логические условия.
Образец данных:
{ "totalamount" : 10, "creationDate" : ISODate("2014-09-01T01:00:58.909Z"), "paid" : true}
{ "totalamount" : 30, "creationDate" : ISODate("2014-09-01T03:00:58.909Z"), "paid" : true}
{ "totalamount" : 20, "creationDate" : ISODate("2014-09-02T01:00:58.909Z"), "paid" : true}
Это то, что я пробовал:
db.transactions.aggregate(
[
{
$group:
{
_id: {
day: { $dayOfMonth: "$creationDate"},
month:
{
$cond: [{ $gte: [$month: "$creationDate", 9]},9,0]
},
year:
{
$cond: [{ $gte: [$year: "$creationDate", 2014]},2014,0]
},
},
collected: {
$sum: {
$cond: [
{"$paid":"true"}, "$totalamount",0]
}
}
}
}
]
)
Однако я получаю "SyntaxError: Unexpected token :"
Любые идеи в это было бы очень полезно. Спасибо!