MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Премахване на дублиращи се записи с MapReduce

Не съм използвал mongoDB, но съм използвал mapreduce. Мисля, че сте на прав път по отношение на функциите mapreduce. За да изключите he 0 и празни низове, можете да добавите отметка в самата функция map.. нещо като

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

И reducir трябва да връща двойки ключ-стойност. Така че трябва да бъде:

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

След това трябва да имате набор от двойки ключ-стойност в изхода, така че ключът да е MlsId и стойността да е броят на възникването на този конкретен идентификатор. Не съм сигурен за частта db.drop(). Както посочихте, най-вероятно ще изтрие всички MlsIds, вместо да премахне само дублиращите се. За да заобиколите това, може би първо можете да извикате drop() и след това да пресъздадете MlsId веднъж. Това ще работи ли за вас?



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Извършване на изявление на случай в рамката за агрегиране на mongodb

  2. Mongoose Уникални стойности във вложен масив от обекти

  3. $filter в $project MongoDB с помощта на Spring Data

  4. Mongodb concat int и низ

  5. mongoose персонализирано валидиране с помощта на 2 полета