我正在尝试运行mongo查询以使用另一个字段的值更新一个字段的值 . 我有以下文件:
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d5"), "old" : 16, "new" : 17 }
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d3"), "old" : 11, "new" : 12 }
我希望在更新后让它看起来像这样:
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d5"), "old" : 16, "new" : 16 }
{ "_id" : ObjectId("56e0a3a2d59feaa43fba49d3"), "old" : 11, "new" : 11 }
我试过以下没有运气
db.runCommand(
{
findAndModify: "testData",
query: { $where: "this.new != this.old" },
update: { old : this.new },
upsert: true
}
)
和
db.testData.update( { $where: "this.new != this.old" }, { $set: { old: this.new } } );
mongoDb甚至可以实现这一点吗?
我想在一个查询中执行它,而不是遍历每个文档 .
任何想法将不胜感激 .
谢谢
2 回答
你还不能在MongoDB中做到这一点(请注意未来的访问者:我指的是V3.2) .
你必须迭代文件 .
注意's a trick in case you don' t介意删除
old
字段:使用rename将old
重命名为new
.NB2对于一些SQLike-fu动作(不是这个),aggregation framework可能很有用 .
您可以尝试这样的事情,并在您想要更新其他文档时更改
_id
: