Как преобразовать массив в объект в MongoDB

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

               { "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
                    },.................}}

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

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

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

dnickless 25.10.2018 13:34

ваш ожидаемый результат не является допустимым объектом.

matthPen 25.10.2018 13:48
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
2
5 841
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предполагаю, что второй не является правильным форматом объекта, вам нужно пара значений ключа для make объекта

{ "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
                    }}}

Да вот так

Labeeb Shareef 26.10.2018 08:22

@LabeebShareef, я думаю, вы уже нашли ответ, есть другой способ сделать то же самое, используя underscore.js underscorejs.org/#groupBy

shivam dhankani 26.10.2018 14:10
Ответ принят как подходящий

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

{
            $project: {
                "content": {
                    "$arrayToObject": {
                        "$map": {
                            "input": "$content",
                            "as": "el",
                            "in": {
                                "k": "$$el._id",
                                "v": "$$el"
                            }
                        }
                    }
                }
}

Другие вопросы по теме