MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Rimozione di record duplicati utilizzando MapReduce

Non ho usato mongoDB ma ho usato mapreduce. Penso che tu sia sulla strada giusta in termini di funzioni mapreduce. Per escludere lui 0 e stringhe vuote, puoi aggiungere un segno di spunta nella funzione mappa stessa.. qualcosa come

m = function () { 
  if(this.MlsId!=0 && this.MlsId!="") {    
    emit(this.MlsId, 1); 
  }
} 

E ridurre dovrebbe restituire coppie chiave-valore. Quindi dovrebbe essere:

r = function(k, vals) {
  emit(k,Arrays.sum(vals);
}

Dopo questo, dovresti avere un set di coppie chiave-valore in output in modo tale che la chiave sia MlsId e il valore sia il numero di volte in cui questo particolare ID si verifica. Non sono sicuro della parte db.drop(). Come hai sottolineato, molto probabilmente eliminerà tutti gli MlsId invece di rimuovere solo quelli duplicati. Per aggirare questo problema, forse puoi prima chiamare drop() e poi ricreare MlsId una volta. Funzionerà per te?