我每小時都將條目添加到模式中,以便跟蹤數天內的增長情況,同時保持當天的當前分數。現在我希望能夠在過去一週內每天取得最近的記錄。結果將是在6天前的午夜或其附近的6條記錄,第7天是當天的最新記錄。查找最近7天當天的最後一個文檔
這裏是我的架構:
var schema = new Schema({
aid: { type: Number }
, name: { type: String }
, score: { type: Number }
, createdAt: { type: Date, default: Date.now() }
})
編輯
我用這種靜態的嘗試,但它拉完全相同的創紀錄的700倍
schema.statics.getLastWeek = function(name, fn) {
var oneday = 60 * 60 * 24
, now = Date.now()
, docs = []
for (var i = 1; i <= 7; i++) {
this.where('name', new RegExp(name, 'i'))
.where('createdAt')
.gte(now - (i * oneday))
.desc('createdAt')
.findOne(function(err,doc){
docs.push(doc)
})
}
}
如果我是使用SQL我會做一個子查詢選擇MAXDATE並將其加入我的主要查詢爲了檢索我想要的結果。無論如何在這裏做到這一點?
Thanx爲這本書,偉大的閱讀。但是,我一直使用你的例子得到'ret' undefined錯誤,發現貓鼬根據[這篇文章]做了一個不同的方式(http://wmilesn.com/2011/07/code/how-to-map-reduce -with-mongoose-mongodb-express-node-js /)(對於任何正在尋找答案的人) –