Как изменить элементы поля массива на значения dict с одним атрибутом в MongoDB - PullRequest
1 голос
/ 11 февраля 2020

Мне нужен способ изменить элементы поля массива на значения dict с одним атрибутом. Мне не нужно записывать результат обратно в мою таблицу. Я просто должен прочесть это так.

В моей таблице есть строки, подобные этой:

{a: 1, b:[ {...}, ..., {...} ], c: 2}

Мне нужен запрос, который возвращает каждую строку, переписанную так:

{a: 1, b: [ {foo: { ... }}, ..., {foo: {...}} ], c: 2}

Другими словами, каждый элемент b становится диктовкой с одним атрибутом, foo.

Это похоже на работу для $project или $replaceRoot или $set.

Я использую MongoDB 4.2.2 и PyMon go 3.10.1 в Ubuntu 18.04.

1 Ответ

0 голосов
/ 11 февраля 2020

Вы можете сделать это с помощью агрегации:

db.collection.aggregate([{$addFields : {b : { $map: { input: '$b', in: {foo : '$$this'} } }}}])

Тест: MongoDB-Playground

Ссылка: $ addFields , $ map

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...