我刚刚从MongoDB 2.2版更新到2.6版,发现您无法再使用带有空字典的方法中的$set
和$unset
运算符update
。例如,调用db.mytable.update({field:value}, {$set:{}})
过去只是使文档保持不变,但是现在会引发错误,指出to的值$set
不能为空。
有人可以证明为什么这是对旧行为的改进吗?对我来说,这只会产生不必要的额外逻辑需求,例如if
在尝试之前确保值不为空的语句update
。
SERVER-12266包含官方解释。特别是此评论:
我今天与Scott Hernandez进行了交谈,他解释了关于空修饰符的新严格性旨在警告那些无意间发送空更新的用户。[...]
无论合理与否,我不能说。我想您可以通过默认情况下_id
将$set
值(或其他常量字段)附加到值来解决此问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句