Я добавляю записи в схему каждый час, чтобы отслеживать рост в течение нескольких дней, сохраняя текущий балл за текущий день. Теперь я хотел бы получить самую последнюю запись за каждый день за последнюю неделю. Результатом будет 6 записей в день полуночи или около полуночи в течение 6 дней, а седьмой - последним для текущего дня.Найти последний документ дня за последние 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', используя ваш пример, и обнаружил, что мангуста делает это по-другому в соответствии с [этой статьей] (http://wmilesn.com/2011/07/code/how-to-map-reduce -with-mongoose-mongodb-express-node-js /) (для любого, кто ищет ответ) –