2017-10-13 14 views
1

私はGrailsやGORMに慣れていません(私たちがほとんど触れていないレガシープロジェクトです)。GORM Updateすべての参照プロパティ

私の問題:クエリに一致するすべてのオブジェクトを更新する必要があり、更新は基本的にオブジェクトの別のプロパティを参照し、あるプロパティから別のプロパティにコピーする必要があります。別の課題は、問題を避けるために、検索と更新をアトミックに行う必要があることです。 dbとして私たちは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を使用してロックされていません。どんなソリューションでも最高のものです。事前

答えて

0

で おかげで最速のソリューションは、「低レベル」のmongoクエリを使用することです:

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

あなたはモンゴプラグイン/モンゴのバージョンでupdateMany方法を持っていること、しかし確認する必要がありドライバ。

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

これは完全にはポイントではありませんが、コピーするのではなくプロパティの名前を$に変更するだけで済みました。ありがとう – Kroney

関連する問題