在MongoDB中,在更新对象时将字段的先前值保留在不同字段中的方法?

时间:2014-12-17 14:08:31

标签: mongodb mongodb-query

假设我有一个包含字段state的对象,我想更新此字段,同时在state字段中保留previous_state的先前值。首先,我尝试使用unset-rename-set进行更新:

  

collection.update(query, {$unset: {previous_state: ""}, $rename: {state: "previous_state"}, $set: {state: value}})

毫不奇怪它不起作用。看完之后:

我几乎确信我没有在单个查询中执行此操作的解决方案。那么问题是这样做的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

一个解决方案(如果您只有一个编写者)可以通过两个步骤触发更新:

> var previousvalue = collection.findOne(query).state;
> collection.update(query, {$set: {"previous_state": previousvalue, "state": newstatevalue}});