Как получить индексы уже существующей коллекции MongoDB и затем передать ее в воссозданную версию - в Java? - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно удалить коллекцию MongoDB, а затем заново создать ее с теми же индексами, что и раньше.Однако я не хочу жестко кодировать индексы;Я хочу автоматически извлекать индексы, хранить их где-нибудь и передавать их обратно после сбора и повторного создания.Эта программа будет работать каждую ночь через задание cron.Вот где я застрял:

<MONGO Connector code...>
MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
MongoCollection<Document> collectionX = mongoDatabase.getCollection("XCollection");
ListIndexesIterable<Document> indexes = collectionX.listIndexes();
collectionX.drop();
mongoDatabase.createCollection("XCollection");
collectionX.createIndex(indexes); //Throws exception "createIndex (org.bson.conversions.Bson) in MongoCollection cannot be applied to (com.mongodb.client.ListIndexesIterable<org.bson.Document>)"
-----------------------------------------------------------
Another way...
for (Document document : indexes) {
        collectionX.createIndex(document);
    }
This throws error too: Exception in thread "main" com.mongodb.MongoCommandException: Command failed with error 67: 'Unknown index plugin '_id_'' on server XX.XXX.XXX.XX:XXXXX. The full response is { "ok" : 0.0, "errmsg" : "Unknown index plugin '_id_'", "code" : 67, "codeName" : "CannotCreateIndex" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...