MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Removendo registros duplicados usando MapReduce


Eu não usei o mongoDB, mas usei o mapreduce. Acho que você está no caminho certo em termos das funções mapreduce. Para excluir ele 0 e strings vazias, você pode adicionar uma verificação na própria função map .. algo como
m = function () { 
  if(this.MlsId!=0 && this.MlsId!="") {    
    emit(this.MlsId, 1); 
  }
} 

E reduzir deve retornar pares de valores-chave. Assim deve ser:
r = function(k, vals) {
  emit(k,Arrays.sum(vals);
}

Depois disso, você deve ter um conjunto de pares chave-valor na saída, de modo que a chave seja MlsId e o valor seja o número de vezes que esse ID específico ocorre. Não tenho certeza sobre a parte db.drop(). Como você apontou, ele provavelmente excluirá todos os MlsIds em vez de remover apenas os duplicados. Para contornar isso, talvez você possa chamar drop() primeiro e depois recriar o MlsId uma vez. Será que isso funciona para você?