在ruby版本2.2.0,MongoDB版本3.0.5,
上使用Ruby-on-Rails时当更新数据为空哈希时,尝试执行包含更新和增量的更新查询时,我遇到了一种奇怪的行为:
运行命令时:
(1)db.collection.update({'user_id' => 123456}, {'$set' => {}, '$inc' => { 'counter' => 1 }}, {:upsert => true})
字段counter
的值保持原样(无变化)。
运行命令时:
(2)db.collection.update({'user_id' => 123456}, {'$inc' => { 'counter' => 1 }}, {:upsert => true})
字段counter
的值按预期增加1。
有人可以向我解释为什么命令(1)的结果与命令(2)不同?
答案 0 :(得分:1)
db.collection.update({'user_id' => 123456}, {'$set' => {}, '$inc' => { 'counter' => 1 }}, {:upsert => true})
输出'$set' is empty. You must specify a field like so: {$mod: {<field>: ...}}
例外
这可能是您的计数器没有递增的原因。
你使用的是哪个版本的mongodb是2.6