MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Suppression des enregistrements en double à l'aide de MapReduce

Je n'ai pas utilisé mongoDB mais j'ai utilisé mapreduce. Je pense que vous êtes sur la bonne voie en ce qui concerne les fonctions mapreduce. Pour exclure les 0 et les chaînes vides, vous pouvez ajouter une vérification dans la fonction map elle-même... quelque chose comme

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

Et reduce devrait renvoyer des paires clé-valeur. Donc ça devrait être :

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

Après cela, vous devriez avoir un ensemble de paires clé-valeur en sortie telles que la clé est MlsId et la valeur est le nombre de fois où cet ID particulier se produit. Je ne suis pas sûr de la partie db.drop(). Comme vous l'avez souligné, il supprimera très probablement tous les MlsId au lieu de supprimer uniquement les doublons. Pour contourner ce problème, vous pouvez peut-être d'abord appeler drop(), puis recréer le MlsId une fois. Cela fonctionnera-t-il pour vous ?