2

flush()経験的には、それ以降は必要ないように思われfindAndUpdate()ます。Doctrine ODM/MongoDB のドキュメントのどこにも明示的に記載されているのを見つけることができませんでした (そして、あまりソース コードを読む気にはなりませんでした)。

findAndModifymongodb.org状態のドキュメント

このコマンドを使用して、ドキュメント (最大 1 つ) をアトミックに変更し、それを返すことができます。

Doctrine MongoDBfindAndUpdate()は MongoDB のfindAndModify. したがって、すべてが実際に一度に行わflush()れるように思われるため、ドキュメント マネージャーを呼び出す必要はありません。

4

1 に答える 1

2

フラッシュは、管理対象オブジェクトへの変更をMongoに書き戻すためにのみ必要です。クエリビルダーインターフェイスを介して行うことはすべて直接実行され、UnitOfWorkをバイパスします。これは、更新とアップサートに特に当てはまります。の場合findAndUpdate()、Mongoですぐに更新を実行する必要がありますが、返されたオブジェクトは管理されている可能性があります。後で(たとえば、setterメソッドを介して)そのドキュメントに変更を加えたflush()場合は、Mongoに書き戻す必要があります。

また、のオプションにreturnNew()対応するクエリビルダーに注意してください。デフォルトでは、ドキュメントは更新前の状態で返されると思います。更新された状態でドキュメントを取得することをお勧めします。newfindAndModifyfindAndUpdate()

于 2012-06-04T15:28:35.827 に答える