通过reddit排序算法对mongodb进行排序

程序员

这是一个根据Reddit的排名算法对项目进行排名的js代码。

我的问题是:如何使用此代码对mongodb文档进行排名?

Reddit的排名算法

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;
}
尼尔·伦恩

好吧,您可以使用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(不使用reducer):

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

当然,假设你的“收藏”有田野upsdownsdate当然,必须以“唯一”的方式发出“排名”,否则,您需要“减少者”来整理结果。

但总的来说应该做的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过reddit排序算法对mongodb进行排序

来自分类Dev

排序算法未通过

来自分类Dev

使用排序方法对算法次数进行排序

来自分类Dev

对数字进行排序的算法

来自分类Dev

MongoDB对孩子进行排序

来自分类Dev

如何通过mongoDB中函数的结果对查询结果进行排序

来自分类Dev

通过单击表头进行排序

来自分类Dev

通过SQL进行Rails排序

来自分类Dev

使用自定义排序算法对卡片组进行排序

来自分类Dev

使用自定义排序算法对卡片组进行排序

来自分类Dev

在Θ(n)时间对列表进行排序的算法

来自分类Dev

使用qsort算法对链表进行排序

来自分类Dev

使用API进行排序还是算法?

来自分类Dev

哪种算法对这些数字对进行排序更快?

来自分类Dev

如何按业力对 Reddit 用户进行排序?

来自分类Dev

如何在MySQL中通过自定义算法对数据进行排序?

来自分类Dev

最适合对几乎已排序的数组进行排序的排序算法

来自分类Dev

快速排序算法中的排序

来自分类Dev

排序算法,插入排序

来自分类Dev

排序算法-Java排序栈

来自分类Dev

如何通过数字排序方法对json对象进行排序

来自分类Dev

PHP排序-通过Unix时间戳对多维数组进行排序

来自分类Dev

rethinkdb中类似reddit的排序

来自分类Dev

Mongodb-猫鼬,通过汇总两个字段进行排序

来自分类Dev

通过范围查询与另一个排序字段进行mongodb分页

来自分类Dev

通过范围查询与另一个排序字段进行mongodb分页

来自分类Dev

通过ID数组对Laravel集合进行排序

来自分类Dev

通过C#对ObservableCollection <string>进行排序

来自分类Dev

通过a * b的结果对(a,b)对进行排序