【发布时间】:2011-08-16 19:38:10
【问题描述】:
*基本上我正在尝试按过去一小时内的分数对对象进行排序。
我正在尝试为我的数据库中的对象生成每小时投票总和。投票嵌入到每个对象中。对象架构如下所示:
{
_id: ObjectId
score: int
hourly-score: int <- need to update this value so I can order by it
recently-voted: boolean
votes: {
"4e4634821dff6f103c040000": { <- Key is __toString of voter ObjectId
"_id": ObjectId("4e4634821dff6f103c040000"), <- Voter ObjectId
"a": 1, <- Vote amount
"ca": ISODate("2011-08-16T00:01:34.975Z"), <- Created at MongoDate
"ts": 1313452894 <- Created at timestamp
},
... repeat ...
}
}
这个问题其实和我前两天问的一个问题Best way to model a voting system in MongoDB有关
我将如何(我可以?)运行 MapReduce 命令来执行以下操作:
- 仅在最近投票 = true 或每小时得分 > 0 的对象上运行。
- 计算过去一小时内创建的投票总和。
- 更新每小时得分 = 上面计算的总和,最近投票 = 假。
我还阅读了here,我可以通过在 M/R 命令之前运行 db.getMongo().setSlaveOk() 在从属数据库上执行 MapReduce。我可以在从属设备上运行 reduce 并更新主数据库吗?
是否可以使用 Mongo MapReduce 进行就地更新?
【问题讨论】: