sql >> Base de Datos >  >> NoSQL >> MongoDB

Eliminar registros duplicados usando MapReduce

No he usado mongoDB pero he usado mapreduce. Creo que estás en el camino correcto en términos de las funciones mapreduce. Para excluir el 0 y las cadenas vacías, puede agregar una verificación en la función de mapa en sí ... algo como

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

Y reduce debería devolver pares clave-valor. Así debería ser:

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

Después de esto, debe tener un conjunto de pares clave-valor en la salida, de modo que la clave sea MlsId y el valor sea el número de veces que aparece esta ID en particular. No estoy seguro acerca de la parte db.drop(). Como señaló, lo más probable es que elimine todos los MlsId en lugar de eliminar solo los duplicados. Para evitar esto, tal vez pueda llamar a drop() primero y luego recrear el MlsId una vez. ¿Funcionará eso para ti?