Mongodb как mongodump только индексы к другому экземпляру mongodb

У меня есть экземпляр mongodb с большим количеством данных, теперь мне нужно запустить новый экземпляр с той же структурой без данных.

как это сделать?

Ответ 1

Вы можете сделать это с помощью опции "запрос" с запросом, который не возвращает какой-либо документ. Что-то вроде:

mongodump -q '{ "foo" : "bar"  }'

Это приведет к удалению всех dbs и индексов, после чего вы сможете сделать mongorestore, чтобы воссоздать их в другой экземпляр mongod

См. документацию: http://docs.mongodb.org/manual/reference/program/mongodump/#cmdoption--query

Ответ 2

Вы можете войти в оболочку mongo и выполнить следующие операторы кода, чтобы сгенерировать операторы создания индексов. После этого используйте операторы для воссоздания индексов.

var collectionList = db.getCollectionNames();
for(var index in collectionList){
    var collection = collectionList[index];
        var cur = db.getCollection(collection).getIndexes();
        if(cur.length == 1){
            continue;
        }
        for(var index1 in cur){
            var next = cur[index1];
            if(next["name"] == '_id_'){
                continue;
            }
       var unique=next["unique"]?true:false;
       print("try{ db.getCollection(\""+collection+"\").createIndex("+JSON.stringify(next["key"])+",{unique:"+unique+"},{background:1})}catch(e){print(e)}");}}