首先,我想为我糟糕的英语道歉。
我有一个如下所示的架构:
var playerSchema = new Schema({
name: { type: String, required: true, trim: true, index: { unique: true } },
wood: { type: Number, required: true, default: 500 },
woodPerHour: { type: Number, required: true, default: 3600 }
});
我希望每秒增加'wood'一定数量的'woodPerHour'/ 3600。问题是使用$ inc,我无法根据架构值添加数量。这就是它现在的样子(我正在加1测试)。
playerModel.update({}, {$inc:{wood:1}}, function(err){
if(err) console.log("error al update: " + err);
});
有一种聪明的方法可以做到这一点,或者我必须进行查找({}),然后进行每次操作?
感谢。
答案 0 :(得分:0)
如你所说,没有办法使用更新。你需要通过简单的迭代来做到这一点。
playerModel.find({}, function(err, data) {
if (!err) {
data.wood = data + data.woodPerHour/3600; //update as you want
data.save(function(err) {
if (err) {
console.log("Error occured while updating doc: " + data._id);
} else {
console.log("Doc updated: " + data._id);
}
})
} else {
console.log("Error occured while iterationg");
}
})
答案 1 :(得分:0)
我认为你需要使用find({}): 例如
playerModel.find({}, function(err,records){
if(err) console.log("error trying to update ");
for(var i in records) {
records[i].wood++; // Or some calc
records[i].save();
}
});