GORM UpdateAll 参考 属性

GORM UpdateAll reference property

我对 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。无论哪种解决方案最适合。 提前致谢

最快的解决方案是使用 "low-level" 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 ] )