MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

दस्तावेज़ के बाहर निहित विशेषताओं के आधार पर MapReduce एकत्रीकरण

मैंने MapReduce को कुछ संग्रहीत जावास्क्रिप्ट में लपेटकर ऐसा किया।

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

कष्टप्रद, और गन्दा, लेकिन यह काम करता है, और मैं इससे बेहतर के बारे में नहीं सोच सकता।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js पर MongoDB कनेक्शन के लिए सबसे अच्छा अभ्यास क्या है?

  2. नेवला, कुल में दो अलग-अलग क्षेत्रों का मिलान करें?

  3. MongoDB के लिए C# ड्राइवर का उपयोग करके ऑर्डर या सॉर्ट कैसे निर्दिष्ट करें?

  4. केस असंवेदनशील संपत्ति मैपिंग

  5. मेरे रेफरी दस्तावेज़ क्यों नहीं भरेंगे?