MongoDB将限制设置为$ inc

时间:2014-02-05 20:31:37

标签: mongodb

我有体育运动员数据库,其中包含他们的“技能”。例如,数据库中的足球运动员有14种技能。每天我都会模拟他们的训练,这一天训练有素的技能会增加一些。我的收藏有超过150万条记录,所以我做批量更新。问题是使用$ inc,它可以设置超过限制的值,在我的情况下,技能限制为100。 如何设置限制为字段,如果超出限制则不会更新?

我还试图在更新后修复“修复”技能,我的意思是在训练模拟完成后,我运行脚本迭代所有玩家,如果它有一个超值的字段,我做更新查询来修复它,但是制作150万个单独的查询会对服务器造成影响,那么还有其他方法吗?

编辑: 增加的值在计算中有一些随机值,因此对所有玩家来说都不一样。但是值可以是0到1,舍入到第2位,例如它可以是0.1,0.2,0.3 .... 1。因此,我使用此值和训练技能对玩家进行分组,并使用运营商$ in更新数据库,其中包含训练相同技能并且训练值相同的玩家ID

1 个答案:

答案 0 :(得分:7)

您可以通过查询文档对其进行限制:

db.players.update({skills : {$lt : 100}}, {$inc : {skills : 1}})