假设我有一本书模式。它几乎没有字段。
const Book = new schema({
title: String,
content: String,
like: Number
});
如何获得过去2周中最喜欢的书?最多,它需要每天更新。
例如,假设我过去两天只需要喜欢。 5 人们完全喜欢这本书, 7 人们喜欢第2天的书, 3 People tay3。因此,我希望第2天上的12个赞(5 7)和在第3天(7 3)
上的10个赞我打算添加一个字段和14个元素数组。
{
...,
likeCnt: {
type: Array,
default: Array(14).fill(0)
}
}
因此,只有在某人喜欢这本书时才更新Date().getDate() % 14
元素。
但是,我每天都需要使用cron-job对每本书的likeCnt[]
归零。请告诉我一个更有效的解决方案。
非常感谢。
我将创建一个新数组,我将保留数据发生的每一个更改的日期。
{
...,
likes: [Date],
}
然后请求以这种方式进行最后两个星期更改:
collection.find({
likes: {
$gte: Date.now() - 1209600000,
},
});
这个吸引人即使在两个星期之后也会使您保留数据。
您可以定期将它们删除,也可以保留并允许您以后更改功能。如果下个月您需要3周的数据怎么办?始终认为通用和演变。