Mongooses – 如何在过去两周内获得数据变化

假设我有一个书架。 它有几个领域。

const Book = new schema({ title: String, content: String, like: Number }); 

如何得到过去2周内最喜欢的书? 最重要的是,它需要每天更新。

举个例子,假设我现在只需要过去两天的喜欢。 第一天共有5人喜欢这本书,第二天有7人喜欢这本书,第三天有3人。 因此,我预计第二天有12个喜欢(5 + 7)第三天有7个喜欢(7 + 3)

我打算添加一个字段和一个14元素的数组。

 { ..., likeCnt: { type: Array, default: Array(14).fill(0) } } 

所以只有当有人喜欢这本书时才更新Date().getDate() % 14 th元素。

但是,我需要使用cron-job来每天将每本书的likeCnt[] 。 请告诉我一个更有效的解决scheme。

非常感谢。

我会创build一个新的数组,在那里我会保存数据发生的每一个变化的date。

 { ..., likes: [Date], } 

然后请求这种方式来获得最后两周的变化:

 collection.find({ likes: { $gte: Date.now() - 1209600000, }, }); 

这种方法会让你在两周后保存数据。

您可以定期删除它们,也可以保留它,以便稍后更改您的function。 如果下个月你需要3周的数据呢? 总是认为通用和演变。