Javascript 用reddit排序算法对mongodb进行排序

Javascript 用reddit排序算法对mongodb进行排序,javascript,mongodb,mapreduce,Javascript,Mongodb,Mapreduce,下面是一个js代码,用于根据Reddit的排名算法对项目进行排名 我的问题是:如何使用此代码对mongodb文档进行排名 () 功能热(上升、下降、日期){ 风险值得分=上升-下降; 变量顺序=log10(数学最大值(数学绝对值(分数),1)); var sign=score>0?1:score您可以使用mapReduce: var mapper=function(){ 功能热(上升、下降、日期){ 风险值得分=上升-下降; 变量顺序=log10(数学最大值(数学绝对值(分数),1)); 变量符

下面是一个js代码,用于根据Reddit的排名算法对项目进行排名

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

()

功能热(上升、下降、日期){
风险值得分=上升-下降;
变量顺序=log10(数学最大值(数学绝对值(分数),1));

var sign=score>0?1:score您可以使用mapReduce:

var mapper=function(){
功能热(上升、下降、日期){
风险值得分=上升-下降;
变量顺序=log10(数学最大值(数学绝对值(分数),1));

变量符号=分数>0?1:分数您的函数有问题:

new Date(1970, 1, 1) // Sun Feb 01 1970 00:00:00 GMT-0300 (BRT)
是的,第一个月是二月,它也使用系统时区。 JavaScript中的新纪元是

var epoch = new Date(Date.UTC(1970, 0, 1))

功能

function epochSeconds(d){
    return (d.getTime() - new Date(1970,1,1).getTime())/1000;
}
应该是公正的

function epochSeconds(d){
    return d.getTime()/1000;
}
压缩一点,这将返回与中的python函数完全相同的结果

功能热(上升、下降、日期){
风险值得分=上升-下降;
var order=Math.log(Math.max(Math.abs(score),1))/Math.LN10;
变量符号=得分>0?1:得分<0?-1:0;
var seconds=(date.getTime()/1000)-1134028003;
var乘积=订单+符号*秒/45000;
返回数学整数(乘积*10000000)/10000000;
}

什么是“内联”?您能包括减速机功能吗?是的,谢谢您发布代码!
epoch.getTime() // 0
function epochSeconds(d){
    return (d.getTime() - new Date(1970,1,1).getTime())/1000;
}
function epochSeconds(d){
    return d.getTime()/1000;
}
function hot (ups, downs, date){
  var score = ups - downs;
  var order = Math.log(Math.max(Math.abs(score), 1)) / Math.LN10;
  var sign = score > 0 ? 1 : score < 0 ? -1 : 0;
  var seconds = (date.getTime()/1000) - 1134028003;
  var product = order + sign * seconds / 45000;
  return Math.round(product*10000000)/10000000;
}