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

Mongo:пребройте броя на поява на думи в набор от документи

MapReduce може да е подходящ, който може да обработва документите на сървъра, без да извършва манипулации на клиента (тъй като няма функция за разделяне на низ на DB сървъра (отворен проблем).

Започнете с map функция. В примера по-долу (който вероятно трябва да е по-стабилен) всеки документ се предава на map функция (като this ). Кодът търси summary поле и ако е там, го записва с малки букви, разделя се на интервал и след това излъчва 1 за всяка намерена дума.

var map = function() {  
    var summary = this.summary;
    if (summary) { 
        // quick lowercase to normalize per your requirements
        summary = summary.toLowerCase().split(" "); 
        for (var i = summary.length - 1; i >= 0; i--) {
            // might want to remove punctuation, etc. here
            if (summary[i])  {      // make sure there's something
               emit(summary[i], 1); // store a 1 for each word
            }
        }
    }
};

След това в reduce функция, той сумира всички резултати, намерени от map функция и връща дискретна сума за всяка дума, която е била emit посочено по-горе.

var reduce = function( key, values ) {    
    var count = 0;    
    values.forEach(function(v) {            
        count +=v;    
    });
    return count;
}

Накрая изпълнете mapReduce:

> db.so.mapReduce(map, reduce, {out: "word_count"})

Резултатите с вашите примерни данни:

> db.word_count.find().sort({value:-1})
{ "_id" : "is", "value" : 3 }
{ "_id" : "bad", "value" : 2 }
{ "_id" : "good", "value" : 2 }
{ "_id" : "this", "value" : 2 }
{ "_id" : "neither", "value" : 1 }
{ "_id" : "or", "value" : 1 }
{ "_id" : "something", "value" : 1 }
{ "_id" : "that", "value" : 1 }


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

  2. mongodb/mongoose findMany - намерете всички документи с идентификатори, изброени в масив

  3. Използване на AngularJs и MongoDB/Mongoose

  4. MongoDB $gte Оператор на конвейер за агрегиране

  5. Управление на AWS:Как да спестите 30% от разходите си за хостинг на MongoDB