Javascript 为MongoDB/Mongoose中的帖子创建排名算法
我正在为MongoDB中的帖子创建排名算法。我正在使用一个聚合管道,并按如下方式计算排名: 算法: (0.1(喜欢)+0.01(浏览)+0.05(共享))/(0.6+0.01(创建以来的时间)^2) 我面临的问题是,如果这篇文章是全新的,还没有被浏览/分享/喜欢,那么这篇文章的排名将始终为0 是否有可能找到在过去X小时内创建的任何帖子,并根据所有其他帖子的平均排名给它们一个排名,以便将它们插入结果中Javascript 为MongoDB/Mongoose中的帖子创建排名算法,javascript,node.js,mongodb,algorithm,mongoose,Javascript,Node.js,Mongodb,Algorithm,Mongoose,我正在为MongoDB中的帖子创建排名算法。我正在使用一个聚合管道,并按如下方式计算排名: 算法: (0.1(喜欢)+0.01(浏览)+0.05(共享))/(0.6+0.01(创建以来的时间)^2) 我面临的问题是,如果这篇文章是全新的,还没有被浏览/分享/喜欢,那么这篇文章的排名将始终为0 是否有可能找到在过去X小时内创建的任何帖子,并根据所有其他帖子的平均排名给它们一个排名,以便将它们插入结果中 const posts = await Posts.aggregate([{
const posts = await Posts.aggregate([{
$match: {}
},
{
$project: {
ranking: {
$divide: [{
$add: [{
$multiply: ["$likes", 0.1]
},
{
$multiply: ["$views", 0.01]
},
{
$multiply: ["$shares", 0.05]
}]
}, {
$add: [
0.6,
{
$multiply: [{
$pow: [{
$divide: [{
$subtract: [new Date(), "$createdAt"]
}, CONSTANTS.MILLISECONDS_IN_ONE_HOUR]
}, 2]
}, 0.01]
}
]
}]
}
}
}, {
$sort: {
ranking: -1
}
}
]);
console.log(posts);