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

MapReduce tổng hợp dựa trên các thuộc tính có bên ngoài tài liệu

Tôi đã làm điều này bằng cách gói MapReduce trong một số javascript được lưu trữ.

Hàm
function (query) {

  var one = db.people.findOne(query);
  var activity_ids = [];
  for (var k in one.activities){
    activity_ids.push(parseInt(k));
  }

  var activity_location_map = {};
  db.activities.find({id : {$in : activity_ids}}).forEach(function(a){
    activity_location_map[a.id] = a.location;
  });


  return db.people.mapReduce(
    function map(){
      for (var k in this.activities){
        emit({location : activity_location_map[k]} , { total: this.activities[k] });
        emit({location: activity_location_map[k]} , { total: this.activities[k] });
      }
    },
    function reduce(key, values){
      var reduced = {total: 0};
      values.forEach(function(value){
        reduced.total += value.total;
      });

      return reduced;
    },
    {out : {inline: true}, scope : { activity_location_map : activity_location_map }}
  ).results;
}

Khó chịu và lộn xộn, nhưng nó hoạt động, và tôi không thể nghĩ nó tốt hơn.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoRepository findByCreateAtBetween không trả về kết quả chính xác

  2. Nhóm và hiển thị dữ liệu

  3. Bộ sưu tập dựa trên nhiều hợp đồng thuê nhà trong dữ liệu mùa xuân mongo

  4. Nhận phần tử cụ thể từ mảng mongoDB

  5. Cách cài đặt MongoDB 4.2 trên hệ thống RedHat / CentOS 7