Я только что сделал это для коллекции с 10 индексами и не хотел их создавать вручную. Вы можете выполнить удаление и воссоздать с помощью индексов со следующими тремя строками в оболочке mongo:
var indexes = db.collection.getIndexKeys().splice(1)
db.collection.drop();
indexes.forEach(function(el){ db.collection.ensureIndex(el, {background:true}); })
Это не достаточно умно, чтобы обрабатывать уникальные или разреженные индексы, но я думаю, что это будет довольно легко поддерживать, используя вместо этого вывод getIndexes (). Мне это не нужно, поэтому я этого не делал.
Соединение (1) предназначено только для удаления индекса _id, поскольку он будет создан автоматически.