sql >> Databasteknik >  >> NoSQL >> MongoDB

Ta bort dubbletter av poster med MapReduce

Jag har inte använt mongoDB men jag har använt mapreduce. Jag tror att du är på rätt väg när det gäller mapreduce-funktionerna. För att utesluta 0 och tomma strängar kan du lägga till en bock i själva kartfunktionen.. ungefär som

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

Och reducera bör returnera nyckel-värdepar. Så det borde vara:

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

Efter detta bör du ha en uppsättning nyckel-värdepar i utdata så att nyckeln är MlsId och värdet är antalet gånger detta specifika ID inträffar. Jag är inte säker på db.drop()-delen. Som du påpekade kommer det med största sannolikhet att radera alla MlsIds istället för att bara ta bort de dubbletter. För att komma runt detta kanske du kan anropa drop() först och sedan återskapa MlsId en gång. Kommer det att fungera för dig?



  1. Jest och Redis (enhet testar problem med databascache)

  2. MongoDB kartlägga/minska över flera samlingar?

  3. Skapa en ny uppsättning från en serie av en sorterad uppsättning i Redis

  4. Skapa nycklar i bulk i Redis - ServiceStack C#