今日の現在のスコアを維持しながら、数日間の成長を追跡するために、1時間ごとにスキーマにエントリを追加しています。今、私は過去1週間の毎日の最新のレコードを取得できるようにしたいと思います。結果は、6日前または6日前の真夜中または6日前の記録であり、7日目は最新のものです。ここで最後の7日間の今日の最後の文書を見つけよう
は私のスキーマです:
var schema = new Schema({
aid: { type: Number }
, name: { type: String }
, score: { type: Number }
, createdAt: { type: Date, default: Date.now() }
})
編集
私は、この静的を使用してみましたが、私がいた場合、それはまったく同じレコードを7回
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'未定義のエラーを取得し続けていると、それはmongooseが[この記事](http://wmilesn.com/2011/07/code/how-to-map-reduce -with-mongoose-mongodb-express-node-js /)(答えを探している人) –