Somente índices criados com {background: true}
originalmente (e, portanto, têm essa opção definida na coleção system.indexes
) são criados em segundo plano depois de restaurados. Depois de ter o banco de dados despejado, você terá seus dados no arquivo name.bson
e os metadados (índices a compilar) no arquivo name.metadata.json
. Ao contrário do arquivo BSON, os metadados JSON são apenas texto e podem ser modificados antes da restauração.
Como teste, criei uma coleção foo.bar
, com dois índices adicionais além do padrão no campo a
e no campo b
. Aqui está como ficou o arquivo bar.metadata.json
descartado na pasta foo depois que eu o descartei:
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "foo.bar" }, { "v" : 1, "key" : { "a" : 1 }, "name" : "a_1", "ns" : "foo.bar" }, { "v" : 1, "key" : { "b" : 1 }, "name" : "b_1", "ns" : "foo.bar", "background" : true } ] }
Você pode "corrigir" isso com seu editor favorito e remover , "background" : true
com um & find & substituir ou similar. Ou você pode usar um forro sed
one, algo como:
sed 's/, "background" : true//g' bar.metadata.json
Qual, como esperado, nos dá:
{ "indexes" : [ { "v" : 1, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "foo.bar" }, { "v" : 1, "key" : { "a" : 1 }, "name" : "a_1", "ns" : "foo.bar" }, { "v" : 1, "key" : { "b" : 1 }, "name" : "b_1", "ns" : "foo.bar" } ] }
Eu testei uma restauração com o arquivo bar.metadata.json acima e meus índices não foram mais criados em segundo plano e não foram marcados como tal em system.indexes
por mais tempo.