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)}");}}