У меня есть коллекция mon go, которая содержит проекты и представлена следующим образом (небольшая выборка):
{
{
"_id" : ObjectId("5c615f9141d6ec562be9fd4d"),
"title" : "Project1",
"_created" : ISODate("2019-02-11T11:42:09Z"),
"org" : [
"ORG1"
]
}
{
"_id" : ObjectId("5cf4ec11362a5f02b74effd3"),
"title" : "Project2",
"org" : [
"ORG2"
],
"_created" : ISODate("2018-06-03T09:44:49Z")
}
{
"_id" : ObjectId("5d0362eb362a5f488a315508"),
"title" : "Another Project",
"org" : [
"ORG3"
],
"_created" : ISODate("2019-06-14T09:03:39Z")
}
{
"_id" : ObjectId("5d0362eb362a5f488a315508"),
"title" : "Multi Org Project",
"org" : [
"ORG1",
"ORG3"
],
"_created" : ISODate("2018-06-14T09:03:39Z")
}
}
То, что я хотел бы сделать, это узнать по временному интервалу (например, $ day / $ month / $ year) номер проекта, созданного в каждой организации (org).
Я изо всех сил пытаюсь сделать это в мон go агрегации.
Мне удается это сделать:
- Подсчет количества проектов, созданных за год
db.projects.aggregate({$group:{_id:{$year: "$_created"}, project:{$sum:1}}})
- Подсчет проектов, созданных Org
db.projects.aggregate([{$unwind:"$org"}, {$group:{_id: "$org", project: {$sum:1}}}])
Но как объединить оба? Я не хочу форсировать какой-либо формат результатов, но он будет выглядеть примерно так:
{
2017: {
"ORG1": 12,
"ORG2": 3,
},
2018...
}
Я нашел много вопросов о MongoDB Aggragation Framework, но я до сих пор не понимаю.
Спасибо за вашу помощь!