MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Копирайте/клонирайте колекция в MongoDB

В по-ранни версии на MongoDB можете да използвате db.collection.copyTo() метод за копиране на колекция.

Оттогава MongoDB отхвърли този метод. Също така, започвайки от версия 4.2, MongoDB премахна eval команда. Даден е db.collection.copyTo() обвива eval , това означава, че не можете да използвате нито един от тях, ако използвате MongoDB 4.2 или по-нова версия.

За щастие има друг начин да копирате колекция MongoDB.

Проверете за инструменти за база данни на MongoDB

В MongoDB можете да клонирате колекция с помощта на MongoDB Database Tools. По-конкретно, можете да използвате mongodump и mongorestore .

Инструментите за база данни на MongoDB са набор от помощни програми от командния ред за работа с MongoDB.

Ако не сте сигурни дали имате инсталирани MongoDB Database Tools, опитайте да изпълните следните команди във вашия терминал или команден ред, за да проверите:

mongodump --version
mongorestore --version

Това специално проверява за mongodump и mongorestore версии.

Ако нямате такива, можете да използвате инструкциите за инсталиране на уебсайта на MongoDB, за да инсталирате MongoDB Database Tools на вашата система.

Клонирайте колекция в същата база данни

Трябва да стартирате mongodump и mongorestore от командния ред на вашата система (например нов прозорец на терминал или команден ред). Не го стартирайте от mongo черупка.

Ето пример за код, който клонира колекция към същата база данни:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'

В този случай правим резервно копие на pets колекция в PetHotel база данни, след което я възстановете като pets2 в същата база данни.

Това използва mongodump за да създадете архивен файл на колекцията, след това mongorestore за да възстановите тази колекция под друго име. Направихме това, като изхвърлихме колекцията в стандартния изходен поток и прехвърлихме в mongorestore .

Ето какво прави всеки параметър:

Параметър Описание
--archive Записва изхода в определен архивен файл или, ако архивният файл не е посочен, записва в стандартния изход (stdout ). В нашия случай архивният файл е неуточнен, така че записа в стандартния изход.
--db Указва базата данни, която съдържа колекцията, която искаме да клонираме. В този случай базата данни се нарича PetHotel .
--nsFrom Указва колекцията в дъмп файла. Това е колекцията, която искаме да клонираме.
--nsTo Указва името на колекцията, която трябва да се използва при възстановяване. В нашия случай го наричаме pets2 .

Копиране на колекция в друга база данни

Можете да използвате същата техника, за да копирате колекцията в друга база данни. В този случай дори няма да е необходимо да променяте името на колекцията, ако не искате.

Ето един пример:

mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive  --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'

Това е много подобно на предишния пример, с изключение на нашия --nsTo аргумент определя PetHouse.pets като колекция дестинация.

Това означава, че клонираната колекция ще се нарича pets , и ще се намира в PetHouse база данни (вместо оригиналния PetHotel база данни).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изключите едно конкретно поле от колекция в Mongoose?

  2. След като приключите, затворете правилно връзката на mongoose

  3. Как да преброите броя на документи в колекция mongodb

  4. Как да използвате mongoimport за импортиране на csv

  5. MongoDB $concatArrays