Как получить общее количество ссылок на каждый объект в коллекции? - PullRequest
0 голосов
/ 22 октября 2018

Итак, я пытаюсь выяснить, сколько раз каждый кайт пролетал на каждом человеке, БД выглядит так:

    {
            "_id" : ObjectId("5bccf4d7ac8fa95f43a964c2"),
            "KITE" : {
                    "registration" : "DTH498"
            }
    }
    {
            "_id" : ObjectId("5bccf4d7ac8fa95f43a964c3"),
            "KITE" : {
                    "registration" : "HKJ607"
            }
    }
    {
            "_id" : ObjectId("5bccf4d7ac8fa95f43a964c4"),
            "KITE" : {
                    "registration" : "GCF21"
            }
    }
    {
            "_id" : ObjectId("5bccf4d7ac8fa95f43a964cf"),
            "PERSON" : {
                    "name" : "H.Y",
                    "used" : [
                            {
                                    "registration" : "DTH498"
                            },
                            {
                                    "registration" : "HKJ607"
                            },
                            {
                                    "registration" : "GCF21"
                            }
                    ]
            }
    }
    {
            "_id" : ObjectId("5bccf4d7ac8fa95f43a9leo5"),
            "PERSON" : {
                    "name" : "T.G",
                    "used" : [
                            {
                                    "registration" : "DTH498"
                            },
                            {
                                    "registration" : "HKJ607"
                            },
                            {
                                    "registration" : "GCF21"
                            }
                    ]
            }
    }
    {
            "_id" : ObjectId("5bccf4d7ac8fro4943a01pak"),
            "PERSON" : {
                    "name" : "X.L",
                    "used" : [
                            {
                                    "registration" : "DTH498"
                            },
                            {
                                    "registration" : "HKJ607"
                            },
                            {
                                    "registration" : "GCF21"
                            }
                    ]
            }
    }

В настоящее время я могу использовать только структуру агрегации, с этим сказаноМне удалось перечислить все использованные воздушные змеи:

db.data.aggregate([
{"$unwind":"$PERSON.used"},
{"$group":{"_id":"$PERSON.used.registration"}}
]).pretty();

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

Я не уверен, как бы это выглядело, но я думаю: 1. Каким-то образом перенести все зарегистрированные объекты массива в новый массив, чтобы он представлял собой один большой список всех случаев использования каждого кайта 2.Сгруппируйте массив по регистрации и используйте сумму для отображения количества дубликатов в каждой группе.

1 Ответ

0 голосов
/ 22 октября 2018

Я сделал это, WOOOO!

так что, если кто-нибудь когда-нибудь наткнется на мой вопрос, вот ответ.

Сначала раскрутите использованный массив. Второй проект, только регистрации. Третья группа с _id ofрегистрация и подсчет с суммой $ 1005 *

db.data.aggregate([
{"$unwind":"$PERSON.used"},
{"$project":{"registration":"$PERSON.used.registration","_id":0}},
{"$group":{"_id":"$registration", "count":{"$sum":1}}}
]);
...