GORM UpdateAll引用属性

时间:2017-10-13 10:11:58

标签: mongodb grails gorm

我对Grails或GORM并不熟悉(它是我们几乎没有碰过的遗产项目)。

我的问题:我需要更新匹配查询的所有对象,并且更新基本上需要引用对象的另一个属性并从一个属性复制到另一个属性。另一个挑战是必须以原子方式进行搜索和更新以避免出现问题。作为一个数据库我们使用mongodb(如果改变了什么)。

//Example: account has three properties: A, B and C
DetachedCriteria<Account> query = Account.where {
  A: "something"
}
query.updateAll(
   B: C //how to reference C here?
)

如何在updateAll中引用C?如果可能的话? 我也没有锁定使用DetachedCriteria。无论什么解决方案都是最好的。 提前致谢

1 个答案:

答案 0 :(得分:0)

最快的解决方案是使用&#34;低级&#34; mongo查询:

Account.collection.updateMany( [ A:'something' ], [ $set:[ A:'something else', B:42 ] ] )

您必须检查您的mongo插件/ mongo驱动程序版本中是否有updateMany方法。你最终可能会:

Account.collection.update( [ A:'something' ], [ $set:[ A:'something else', B:42 ] ], [ multi:1 ] )