Mongodb агрегат, группа и количество экземпляров

У меня есть документ, который выглядит так:

{
    "_id" : ObjectId("527a6b7c24a8874c078b9d10"),
    "day" : 6,
    "hour" : 15,
    "hourlyLocations" : [
        {
            "countryName" : "Spain",
            "countryCode" : "ES",
            "cityName" : "Madrid",
            "latitude" : 40,
            "longitude" : -4
        },
        {
            "countryName" : "United Kingdom",
            "countryCode" : "GB",
            "cityName" : "Soest",
            "latitude" : 51.5,
            "longitude" : -0.13
        }
    ],
    "minute" : 18,
    "month" : 11,
    "year" : 2013
}

«hourlyLocations» - это серия встроенных документов (для краткости здесь показаны только два).

Я пытаюсь запустить агрегацию, которая будет возвращать каждую страну, все города в этой стране (один раз) и количество экземпляров каждого города.

Вот что у меня так далеко:

db.hourly.aggregate(
[
    { "$project" : { "hourly" : "$hourlyLocations" } },
    { "$unwind" : "$hourly" },
    { "$group" : { "_id" : { "country" : "$hourly.countryName", }, "city" : { "$push" : "$hourly.cityName" } } },
]
)

Это возвращает что-то вроде:

{
        "_id" : {
            "country" : "Italy"
        },
        "city" : [
            "Manzano",
            "Cologno Monzese",
            "Rome",
            "Manzano",
            "Cologno Monzese",
            "Venice",
            "Milan",
            "Rome",
            "Milan",
            "Manzano",
            "Cologno Monzese",
            "Venice",
            "Milan",
            "Rome",
            "Milan",
            "Manzano",
            "Cologno Monzese",
            "Venice",
            "Milan",
            "Rome",
            "Manzano",
            "Cologno Monzese",
            "Venice",
            "Milan",
            "Casalnuovo di Napoli",
            "Manzano",
            "Cologno Monzese",
            "Venice",
            "Milan",
            "Casalnuovo di Napoli",
            "Milan"
        ]
    }

Итак, у меня есть все экземпляры всех городов, сгруппированных по городам. Теперь я хочу сгруппировать и посчитать количество экземпляров каждого города. Что-то вроде этого:

{
        "_id" : {
            "country" : "Italy"
        },
        "city" : [
            "Casalnuovo di Napoli" : "12"
            "Cologno Monzese" : "10",
            "Manzano" : "9",
            "Milan" : "6",
            "Rome" : "3",
            "Venice" : "1"
        ]
    }

Я попробовал несколько вещей, но не смог сделать это правильно. Как я могу получить количество каждого города в каждой стране, как мне нужно?

Большое спасибо,

Ник.

Ответы на вопрос(1)

Ваш ответ на вопрос