假设我有一个包含字段state
的对象,我想更新此字段,同时在state
字段中保留previous_state
的先前值。首先,我尝试使用unset-rename-set进行更新:
collection.update(query, {$unset: {previous_state: ""}, $rename: {state: "previous_state"}, $set: {state: value}})
毫不奇怪它不起作用。看完之后:
我几乎确信我没有在单个查询中执行此操作的解决方案。那么问题是这样做的最佳做法是什么?
答案 0 :(得分:0)
一个解决方案(如果您只有一个编写者)可以通过两个步骤触发更新:
> var previousvalue = collection.findOne(query).state;
> collection.update(query, {$set: {"previous_state": previousvalue, "state": newstatevalue}});