Создание новой записи из данных из другой коллекции (MongoDb) - PullRequest
0 голосов
/ 31 мая 2018

Я хотел бы создать новую запись на основе записи из другой коллекции.У меня есть несколько полей по умолчанию.

В sql это будет примерно так:

INSERT INTO collection1 (field1, field2, field3)
SELECT field_1, field_2, "manualValue" as field3 FROM collection2

Ofc в Монго не будет никаких полей назначения.И в моем случае field_1 будет массивом.Коллега сказал, что это должно быть сделано с помощью $ facet, но я не совсем понимаю, как.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 31 мая 2018

Существует оператор $ out , который может работать так же, как INSERT INTO с SELECT в синтаксисе SQL.По сути, он берет ваш конвейер агрегации и перенаправляет его в указанную коллекцию, но есть одно предостережение: он создает новую коллекцию или заменяет существующую, поэтому вы не можете «добавить» свои результаты в существующую коллекцию.Перевод вашего SQL в Mongo:

db.collection2.aggregate([
    {
        $project: {
            field_1: 1,
            field_2: 1,
            field_3: "manualValue"
        }
    },
    {
        $out: "collection1"
    }
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...