как преобразовать массив в объект в MongoDB - PullRequest
0 голосов
/ 25 октября 2018

У меня есть массив объектов с данным неизвестным количеством элементов массива:

               { "content": [
                    {
                        "_id": "refbooks",
                        "total": 189,
                        "published": 189,
                        "created": 0,
                        "approved": 0,
                        "rejected": 0,
                        "sent_for_approval": 0
                    },
                    {
                        "_id": "weblinks",
                        "total": 1911,
                        "published": 1899,
                        "created": 10,
                        "approved": 2,
                        "rejected": 0,
                        "sent_for_approval": 0
                    },.................]}

Я хочу преобразовать его в объект, подобный данному:

                    { "content": {
                    {
                        "_id": "refbooks",
                        "total": 189,
                        "published": 189,
                        "created": 0,
                        "approved": 0,
                        "rejected": 0,
                        "sent_for_approval": 0
                    },
                    {
                        "_id": "weblinks",
                        "total": 1911,
                        "published": 1899,
                        "created": 10,
                        "approved": 2,
                        "rejected": 0,
                        "sent_for_approval": 0
                    },.................}}

Я пытался использовать$ раскрутить, но я не получил желаемый результат.Как реализовать этот внутренний конвейер агрегации в MongoDB?

Я использую Mongo версии 3.4.

Ответы [ 2 ]

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

Я нашел решение.

{
            $project: {
                "content": {
                    "$arrayToObject": {
                        "$map": {
                            "input": "$content",
                            "as": "el",
                            "in": {
                                "k": "$$el._id",
                                "v": "$$el"
                            }
                        }
                    }
                }
}
0 голосов
/ 25 октября 2018

Я полагаю, что второй формат не является подходящим, вам нужен пара значений ключей для make object

{ "content": {
                   "key1":{
                        "_id": "refbooks",
                        "total": 189,
                        "published": 189,
                        "created": 0,
                        "approved": 0,
                        "rejected": 0,
                        "sent_for_approval": 0
                    },
                   "key2":{
                        "_id": "weblinks",
                        "total": 1911,
                        "published": 1899,
                        "created": 10,
                        "approved": 2,
                        "rejected": 0,
                        "sent_for_approval": 0
                    }}}
...