なっく日報

技術やら生活やらのメモ

MongoDB v2.6以降は{$set: {}}でupdateするとエラーになる

[SERVER-12266] Update no longer allows empty modifier objects - MongoDB

によれば、v2.5から、$set$unsetにからオブジェクトを渡すとエラーになるよう、挙動を変更したそう。

> db.foo.update({_id:1}, {$set: {}}, true); db.getLastErrorObj();
{
    "err" : "'$set' is empty. You must specify a field like so: {$mod: {<field>: ...}}",
    "code" : 16840,
    "n" : 0,
    "connectionId" : 2,
    "ok" : 1
}

というエラーが。

v2.4以前使っているような、古いプロジェクトだと結構困るんじゃないでしょうか。