我有一个用Node.js编写的简单排名系统,基于MongoDB数据库。每个月系统会创建不同的数据库:1月份为ranking-1,2月份为ranking-2等等。 现在我需要从七月到十二月计算每个用户六个月的总分。
在每个数据库中,我都有一个名为users的集合(collection),其中包含用户模型,看起来像这样:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UserSchema = new Schema({
id: Number,
name: String,
points: Number,
avatar: String,
rank: String
});
module.exports = mongoose.model('User', UserSchema);
现在我想通过用户ID查找并统计他过去六个月的得分,并将这些数据导出到另一个数据库或集合中。
十二月份的排名仍在更新,因此我需要每15分钟处理一次此任务。
我知道有map和reduce,但如果我理解得正确,它是在同一数据库的集合上运行的?
是否有一种方法可以合并这些数据,还是我需要重建整个系统?