我在nodejs中编写了基于mongodb数据库的简单排名系统。对于每个月,系统创建不同的数据库:Janurary的排名-1,2月的排名-2等。 现在我需要将每个用户点数与六个月相加。从7月到12月。
在每个数据库中,我都有一个名为users的集合,其中包含用户模型,如下所示:
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找到用户,并将他的积分从六个月加起来并将这些数据导出到另一个数据库或集合。
12月的排名仍在更新,所以我需要每15分钟处理一次此任务。
我知道有map和reduce但是如果我理解它很好,那就是在同一个数据库中处理集合?
有没有办法合并这些数据,或者我需要重建整个系统?
答案 0 :(得分:1)
使用MongoDB无法跨数据库查询数据。
而且,坦率地说,除非你有充分的理由继续使用这种习惯,否则按月和#34;分区,我不建议这样做。因此,如果您可以更改系统以将所有内容保存在一个数据库中(甚至可能是一个集合中),那么这当然是最佳选择。
但是,我可以想到一堆解决方法:
query
参数,以将数据限制为真正需要的数据)从相关数据库/集合中提取信息并{{ 3}}将它们恢复到一个公共数据库(理想情况下甚至是同一个目标集合)。然后,您可以针对该新集合运行常规查询。