0
我试图在我的Node.js项目中使用Mongoose中的the $max update operator,但我认为a)我要么做了一些可怕的错误,要么b)Mongoose不支持这个功能。 (使用该为例):
var updateGameScores = function(game, newScore, callback) {
models.Scores.update({
gameName: game
}, {
$set: {
$max: {
highestScore: newScore
}
}
}, {
upsert: true
}, function(err) {
callback(err);
});
};
使我有以下错误:
MongoError: The dollar ($) prefixed field '$max' in '$max' is not valid for storage.
我无法找到有关此方面的猫鼬文档任何东西(或类似功能),这表明猫鼬不支持这一点。 如果确实如此,有什么替代方法可以实现这个**,同时最大限度地减少数据库操作的数量?
**:“更新为指定的值的字段的值,如果指定值大于所述字段的当前值大于”
预先感谢。
您认为$ max会在此更新中为您做些什么? –
@EdwinDalorzo根据(我的解释)[MongoDB的文档](http://docs.mongodb.org/manual/reference/operator/update/max/#up._S_max),我希望它只会更新如果newScore大于旧字段值(如果该字段不存在,只需将其设置为newScore),则可以选择highestScore字段。 – mickdekkers
@Soulleswaffle正如您在共享的例子中看到的那样,当您使用$ max时,您不需要使用$ set,它看起来像$集合被$ max所隐含。也许这就是导致问题的原因。 –