Проверьте ход создания индекса в mongo DB с помощью java-драйвера.

У меня около 10 миллионов данных в MongoDB. Требуется добавить новый составной индекс. Я использовал следующий код для создания файла index. Использование sureIndex с созданием опций в фоновом режиме.

MongoStore.ads().ensureIndexes("MyCollection", MyCollection.class, true);

Мой вопрос заключается в том, как отслеживать ход создания индекса. Есть и другие наборы операций, которые мне нужно выполнить после подтверждения того, что индекс создан на 100%.

Пожалуйста, помогите мне с тем, как я могу проверить прогресс в java.

Я использую версию mongo-java-driver 3.5.


person Parveen    schedule 25.04.2020    source источник


Ответы (1)


Вы не можете отслеживать их с помощью драйвера mongo-java. Но вы можете отслеживать созданные индексы в своей оболочке Mongo:

db.currentOp({"command.createIndexes": { $exists : true } }).inprog.forEach(function(op){ print(op.msg) })

Это вернет вывод, например:

Index Build (background) Index Build (background): 83727/271147 30%

Подробнее о currentOp() см. здесь.

Надеюсь, это поможет :)

person Vijay Rajpurohit    schedule 25.04.2020
comment
Ну, можно выдать $currentOp через драйвер как конвейер агрегации. - person D. SM; 25.04.2020
comment
@Олег, я не в курсе. :) - person Vijay Rajpurohit; 25.04.2020
comment
Вы можете использовать его как обычную стадию конвейера агрегации. - person D. SM; 25.04.2020
comment
@ Олег, можешь привести один пример. Я думал об обходном пути, используя асинхронный обратный вызов, но версия Morphia 1.3.2, в которой sureIndex с асинхронным обратным вызовом не поддерживается. - person Parveen; 25.04.2020
comment
в Ruby это выглядит так: - person D. SM; 25.04.2020
comment
@Олег, с версией драйвера, которую я использую, не позволяет мне добавить агрегатный конвейер и создать индекс. Но спасибо за помощь. В рамках следующего производства мы планируем обновить версию. - person Parveen; 26.04.2020