每个文档都有时间戳,因此查找给定时代的文档非常简单。
如何找到年龄为%3 == 0的文档?在Ruby中这样做很简单,但是大多数文档都是不需要的,所以最好在Mongo中找到相关的文档。
为什么?
其要求是每3天向用户发送一次提醒。我可以安排一项任务每天(或每小时)运行。一种方法是每3天运行一次任务,但最好是在他们注册后3天发送提醒,而不是4-6天之后。
而且,这似乎不是一种非常优雅的方法。是否有更好的方法每3天对文件采取行动?
西纳屈+赫洛库+蒙戈。
发布于 2013-11-08 21:18:23
假设:数据库中有以下带有时间戳的文档。
> db.dinner.find()
{ "_id" : ObjectId("527d4edc6acba77bbdbcdbc5"), "timestamp" : 1383857393558, "dinner" : "strawberries" }
{ "_id" : ObjectId("527d4ee96acba77bbdbcdbc6"), "timestamp" : 1383770993558, "dinner" : "cherries" }
{ "_id" : ObjectId("527d4f116acba77bbdbcdbc7"), "timestamp" : 1383684593558, "dinner" : "blueberries" }
{ "_id" : ObjectId("527d4fa36acba77bbdbcdbc8"), "timestamp" : 1383943793558, "dinner" : "cranberries" }
> 然后你可以找到所有的文档,都是0,3,6,9,.几天前,有以下代码:
today = new Date();
db.dinner.find().forEach(
function(entry) {
daysAgo = Math.floor((today.getTime() - entry.timestamp) / 1000 / 60 / 60 / 24);
if (daysAgo % 3 == 0) printjson(entry);
}
)https://stackoverflow.com/questions/19849272
复制相似问题