Создайте ежедневное задание cron, генерируйтеNewName для вашей коллекции и выполните приведенный ниже код.Здесь я получаю коллекцию с помощью MongoDatabse
, а с помощью MongoNamespace
мы можем переименовать коллекцию.Чтобы получить старое / новое имя коллекции, вы можете написать отдельный метод.
@Component
public class RenameCollectionTask {
@Scheduled(cron = "${cron}")
public void renameCollection() {
// creating mongo client object
final MongoClient client = new MongoClient(HOST_NAME, PORT);
// selecting the mongo database
final MongoDatabase database = client.getDatabase("databaseName");
// selecting the mongo collection
final MongoCollection<Document> collection = database.getCollection("oldCollectionName");
// creating namespace
final MongoNamespace newName = new MongoNamespace("databaseName", "newCollectionName");
// renaming the collection
collection.renameCollection(newName);
System.out.println("Collection has been renamed");
// closing the client
client.close();
}
}
Чтобы назначить имя коллекции, вы можете сослаться на this , чтобы при каждом перезапуске не требовалось.
Метод renameCollection()
имеет следующие ограничения:
1) Он не может перемещать коллекцию между базами данных.
2) Это не поддерживается sharded collections
.
3) Вы не можете переименовать views
.
Подробнее см. в этом .