Mongodb GORM UpdateAll引用属性

Mongodb GORM UpdateAll引用属性,mongodb,grails,gorm,Mongodb,Grails,Gorm,我对Grails或GORM不太熟悉(这是一个我们几乎从未接触过的遗留项目) 我的问题是:我需要更新与查询匹配的所有对象,而更新本质上需要引用对象的另一个属性,并从一个属性复制到另一个属性。另一个挑战是搜索和更新必须以原子方式进行,以避免出现问题。作为一个数据库,我们正在使用mongodb(如果这改变了什么的话) //示例:帐户有三个属性:A、B和C DetachedCriteria查询=Account.where{ A:“某物” } query.updateAll( B:C//这里如何引用C?

我对Grails或GORM不太熟悉(这是一个我们几乎从未接触过的遗留项目)

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

//示例:帐户有三个属性:A、B和C
DetachedCriteria查询=Account.where{
A:“某物”
}
query.updateAll(
B:C//这里如何引用C?
)
如何在updateAll中引用C?如果可能的话? 我也不会使用DetachedCriteria。任何解决方案都是最合适的。
提前感谢

最快的解决方案是使用“低级”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 ] )

最快的解决方案是使用“低级”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 ] )

这并不是完全正确的,但因为我只需要$rename这个属性(而不是copy),所以它起作用了。谢谢,这并不是完全正确的,但因为我只需要$rename这个属性(而不是copy),所以它起作用了。谢谢