Всем доброго!
Пожалуйста, помогите разобратся.
Есть документы в колекции которые виглядят так:
{ "_id" : "1", "region" : "reg1", "address" : "Office 1", "operation_type" : "receive", "amount" : 30, "dateTime" : ISODate("2018-11-03T15:21:50.783Z") }
{ "_id" : "1", "region" : "reg1", "address" : "Office 1", "operation_type" : "receive", "amount" : 50, "dateTime" : ISODate("2018-11-04T15:21:50.783Z") }
{ "_id" : "1", "region" : "reg1", "address" : "Office 1", "operation_type" : "send", "amount" : 100, "dateTime" : ISODate("2018-11-05T15:21:50.783Z") }
{ "_id" : "1", "region" : "reg1", "address" : "Office 1", "operation_type" : "send", "amount" : 20, "dateTime" : ISODate("2018-11-09T15:21:50.783Z") }
В результате хочу получить
суму receive и
send по определенному адресу ну и в будущем ещо и по времени :
{ "_id" : null, "receive" : 80, "send": 120 }
Но что то не получается :
db.operations.aggregate([
{ $match: {"address" : "Office 1"}},
{$group: {_id: null,
receive:
{$sum: { $match: {"operation_type": "receive"} } },
send:
{$sum: { $match: {"operation_type": " send"} } }
}}
])
И вместо желаемого результата - ошибка:
"ok" : 0,
"errmsg" : "Unrecognized expression '$match'",
"code" : 168,
"codeName" : "InvalidPipelineOperator"