MongoDB: изменение имени коллекции

В MongoDB нельзя напрямую переименовать коллекцию с помощью команды.

MongoDB может использовать метод renameCollection для переименования коллекции.

Метод renameCollection выполняется в базе данных admin MongoDB и может переименовать коллекцию в другое имя.

Синтаксис команды renameCollection:

db.adminCommand({
  renameCollection: "sourceDb.sourceCollection",
  to: "targetDb.targetCollection",
  dropTarget: <boolean>
})

Описание параметра:

  • renameCollection: Полное имя коллекции, которую нужно переименовать (включая имя базы данных).
  • to: Полное имя целевой коллекции (включая имя базы данных).
  • dropTarget(Необязательно): Логическое значение. Удалять ли целевую коллекцию, если она уже существует. Значение по умолчанию —false。

Пример

Предположим, вы хотите переименовать oldCollection в базе данных test в newCollection. Вы можете выполнить следующие шаги:

1. Убедитесь, что вы подключены к тестовой базе данных

use test

2. Выполните команду renameCollection

db.adminCommand({ 
  renameCollection: "test.oldCollection", 
  to: "test.newCollection" 
});

Если вы хотите переименовать коллекцию в другую базу данных, например, переименовать oldCollection из тестовой базы данных в newCollection в базе данных production, вы можете сделать это:

db.adminCommand({ 
  renameCollection: "test.oldCollection", 
  to: "production.newCollection" 
});

Примечания

  • Требования к разрешениям: ExecuterenameCollectionКоманда требует соответствующих разрешений для исходной и целевой баз данных. Обычно она требуетdbAdminилиdbOwnerроль.

  • Целевая коллекция не должна существовать: Целевая коллекция не может уже существовать. Если целевая коллекция существует, будет возвращена ошибка.

  • Индексы и данные: Переименование коллекции сохраняет все документы и индексы.

Проверьте результат переименования

После переименования вы можете проверить, существует ли новая коллекция, с помощью следующей команды:

use test
show collections

Если коллекция была переименована в newCollection, вы должны увидеть newCollection в результатах.

Обработка сбоя переименования

Если во время процесса переименования возникает ошибка, вы можете предпринять соответствующие действия на основе сообщения об ошибке. Например, если целевая коллекция уже существует, можно сначала удалить целевую коллекцию (если вы уверены, что она больше не нужна), а затем повторно выполнить операцию переименования:

Пример

use production
db.newCollection.drop();

use test
db.adminCommand({
  renameCollection: "test.oldCollection",
  to: "production.newCollection"
});

С помощью метода renameCollection можно эффективно управлять именами коллекций MongoDB, обеспечивая соответствие структуры базы данных требованиям приложения.

Другие расширения