gpt4 book ai didi

ruby - MongoDB + ruby : updating records in an iteration

转载 作者:可可西里 更新时间:2023-11-01 10:06:47 25 4
gpt4 key购买 nike

使用 MongoDB 和 Ruby 驱动程序,我试图在我的应用程序中计算玩家的排名,因此我按(在本例中)俯卧撑排序,然后添加一个排名字段和每个对象的值。

pushups = coll.find.sort(["pushups", -1] )
pushups.each_with_index do |r, idx|
r[:pushups_rank] = idx + 1
coll.update( {:id => r }, r, :upsert => true)
coll.save(r)
end

这种方法确实有效,但这是遍历对象并更新每个对象的最佳方法吗?有没有更好的方法来计算玩家的段位?

最佳答案

另一种方法是通过执行 javascript 函数在服务器上完成整个更新:

update_rank = "function(){
var rank=0;
db.players.find().sort({pushups:-1}).forEach(function(p){
rank +=1;
p.rank = rank;
db.players.save(p);
});
}"
cn.eval( update_rank )

(代码假定您在 mongo 中有一个“玩家”集合,以及一个保存到您的数据库的连接的 ruby​​ 变量 cn)

关于ruby - MongoDB + ruby : updating records in an iteration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com