sql >> Database >  >> NoSQL >> MongoDB

Dubbele records verwijderen met MapReduc

Ik heb geen mongoDB gebruikt, maar ik heb mapreduce gebruikt. Ik denk dat je op de goede weg bent wat betreft de mapreduce-functies. Om de 0 en lege strings uit te sluiten, kun je een vinkje toevoegen in de kaartfunctie zelf.. zoiets als

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

En reduce zou sleutel-waardeparen moeten retourneren. Dus het zou moeten zijn:

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

Hierna zou u een set sleutel-waardeparen in de uitvoer moeten hebben, zodat de sleutel MlsId is en de waarde het aantal keren dat deze specifieke ID voorkomt. Ik ben niet zeker over het deel db.drop(). Zoals je aangaf, zal het hoogstwaarschijnlijk alle MlsIds verwijderen in plaats van alleen de dubbele te verwijderen. Om dit te omzeilen, kunt u misschien eerst drop() aanroepen en vervolgens de MlsId eenmaal opnieuw maken. Zal dat voor u werken?



  1. ClusterControl op AWS implementeren om uw clouddatabase te beheren

  2. MongoDB $isArray

  3. Hoe redis-server te starten op een andere poort dan de standaardpoort 6379 in ubuntu

  4. Redis-toetsenfunctie voor match met meerdere patronen