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周的数据呢? 总是认为通用和演变。