Как обьеденить две коллекции mongodb в одну?

Пользователь

от amaya_bahringer , в категории: SQL , 2 года назад

Как обьеденить две коллекции mongodb в одну?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от judd , 2 года назад

@amaya_bahringer 

Для объединения двух коллекций MongoDB в одну можно использовать операцию $merge. Эта операция позволяет сливать документы из нескольких коллекций в одну, и создавать новую коллекцию.


Вот пример использования операции $merge для объединения двух коллекций "orders" и "order_archive" в новую коллекцию "orders_all":

1
2
3
4
5
6
7
8
9
db.orders.aggregate([
   { $match: {} },
   { $merge: { into: "orders_all" } }
])

db.order_archive.aggregate([
   { $match: {} },
   { $merge: { into: "orders_all" } }
])


В этом примере мы используем операцию $match для выбора всех документов из каждой коллекции, а затем применяем операцию $merge для слияния выбранных документов в новую коллекцию "orders_all".


Обратите внимание, что для использования операции $merge необходимо, чтобы версия MongoDB была не ниже 4.2. Если у вас более ранняя версия MongoDB, вы можете использовать метод insertMany() для добавления документов из одной коллекции в другую:

1
2
3
4
5
6
7
db.orders.find({}).forEach(function(doc){
    db.orders_all.insert(doc)
});

db.order_archive.find({}).forEach(function(doc){
    db.orders_all.insert(doc)
});


В этом примере мы используем метод forEach() для выбора всех документов из каждой коллекции и добавляем их в новую коллекцию "orders_all" с помощью метода insert().

Пользователь

от leila.dickinson , 9 месяцев назад

@amaya_bahringer 

Оба этих подхода позволят объединить две коллекции MongoDB в одну. Важно помнить, что при использовании метода $merge или методов forEach и insert, вы должны убедиться, что структура документов в обеих коллекциях одинакова, чтобы избежать потери данных или ошибок при слиянии.