MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongo:đếm số lần xuất hiện từ trong một bộ tài liệu

MapReduce có thể là một lựa chọn phù hợp có thể xử lý tài liệu trên máy chủ mà không cần thao tác trên máy khách (vì không có tính năng tách chuỗi trên máy chủ DB (sự cố mở).

Bắt đầu với map hàm số. Trong ví dụ dưới đây (có thể cần phải mạnh mẽ hơn), mỗi tài liệu được chuyển đến map function (as this ). Mã tìm kiếm summary và nếu nó ở đó, hãy viết thường nó, phân chia trên một khoảng trắng, sau đó phát ra một 1 cho mỗi từ được tìm thấy.

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
            }
        }
    }
};

Sau đó, trong reduce , nó tổng hợp tất cả các kết quả được tìm thấy bởi map hàm và trả về tổng số rời rạc cho mỗi từ được emit ted ở trên.

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

Cuối cùng, thực hiện mapReduce:

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

Kết quả với dữ liệu mẫu của bạn:

> 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. Cách thả cơ sở dữ liệu trong MongoDB từ Dòng lệnh

  2. Tham chiếu tài liệu Mongoose có mối quan hệ một-nhiều

  3. MongoDB:Thứ tự chỉ mục và thứ tự truy vấn phải khớp nhau?

  4. Nhận BinData UUID từ Mongo dưới dạng chuỗi

  5. Mongodb không thể khởi động