MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Usuwanie duplikatów rekordów za pomocą MapReduce

Nie korzystałem z mongoDB, ale użyłem mapreduce. Myślę, że jesteś na dobrej drodze, jeśli chodzi o funkcje mapreduce. Aby wykluczyć 0 i puste ciągi, możesz dodać sprawdzenie w samej funkcji mapy.. coś w stylu

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

Zmniejszenie powinno zwrócić pary klucz-wartość. A więc powinno być:

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

Następnie powinieneś mieć zestaw par klucz-wartość w danych wyjściowych, tak aby kluczem był MlsId, a wartością jest liczba wystąpień tego konkretnego identyfikatora. Nie jestem pewien co do części db.drop(). Jak zauważyłeś, najprawdopodobniej usunie wszystkie identyfikatory MlsId zamiast usuwać tylko te zduplikowane. Aby obejść ten problem, możesz najpierw wywołać drop(), a następnie raz odtworzyć identyfikator MlsId. Czy to zadziała dla Ciebie?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak przełączyć pole logiczne w jednym dokumencie za pomocą operacji atomowej?

  2. Jak uzyskać wiele dokumentów za pomocą tablicy identyfikatorów MongoDb?

  3. Najlepszy sposób na hostowanie MongoDB na DigitalOcean

  4. Spring Data MongoDB:Projekcje i agregacje

  5. Uwierzytelnianie MongoDB-CR nie powiodło się