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

रेडिट रैंकिंग एल्गोरिथम द्वारा मोंगोडब को छाँटना

वैसे आप mapReduce का उपयोग कर सकते हैं:

var mapper = function() {

    function hot(ups,downs,date){
        var score = ups - downs;
        var order = log10(Math.max(Math.abs(score), 1));
        var sign = score>0 ? 1 : score<0 ? -1 : 0;
        var seconds = epochSeconds(date) - 1134028003;
        var product = order + sign * seconds / 45000;
        return Math.round(product*10000000)/10000000;
    }

   function log10(val){
      return Math.log(val) / Math.LN10;
   }

   function epochSeconds(d){
       return (d.getTime() - new Date(1970,1,1).getTime())/1000;
   }

   emit( hot(this.ups, this.downs, this.date), this );

};

और mapReduce चलाएं (बिना रिड्यूसर के):

db.collection.mapReduce(
    mapper,
    function(){},
    {
        "out": { "inline": 1 }
    }
)

और निश्चित रूप से यह मानते हुए कि आपके "संग्रह" में ups . के लिए फ़ील्ड हैं , downs और date . बेशक "रैंकिंग" को इस तरह से उत्सर्जित करने की आवश्यकता है जो "अद्वितीय" है अन्यथा आपको परिणामों को छाँटने के लिए "रिड्यूसर" की आवश्यकता है।

लेकिन आम तौर पर बोलते हुए कि काम करना चाहिए।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगो लॉग रोटेशन विंडोज़ पर काम नहीं करता है

  2. नेवला अलग और दस्तावेजों के साथ आबाद

  3. कैसे प्रतिक्रिया में बेस 64 छवि दिखाने के लिए?

  4. Node.js नेवला प्रदर्शन

  5. मोंगोडब समूह और उपसमूह मायने रखता है