あいつの日誌β

働きながら旅しています。

mongo の update

DBに入力した値をxxx以上の値の場合はそのままでそれ以下だったら2倍にしたいとか、そういう処理をしたい場合は書き捨てスクリプトを書いたりする事がありますが
mongoだったらjavascript風の呪文でdbと対話してupdateできるよというお話

あらすじ

とあるゲームを開発したけどユーザーに付与するお金が少なすぎたので
やっぱりもっとお金を付与しましょうみたいなケースがあったと仮定すると次の様にupdateできます。

やってみる

接続する

% mongo
MongoDB shell version: 2.0.2
connecting to: test

テストデータを保存する

for (var i = 0; i < 1000; i ++) { 
   db.User.save({_id:i, money: 100}); 
}

確認する

db.User.count({money:100})
1000

updateする

db.User.find().forEach(function(data) {

    db.User.update({
        "_id": data._id
    }, {        
        $set: {"money": data.money * 10 }
    });
});

確認する

db.User.count({money:1000})
1000

終わったら掃除

db.User.drop()

if分とかで条件分岐したりとか色々できるよ。おしまい