2012-05-31 6 views
2

flush()findAndUpdate() 이후에 필요하지 않습니다. Doctrine ODM/MongoDB 문서에서 명시 적으로 언급 된 내용을 찾을 수 없었습니다 (많은 소스 코드를 읽지 않아도되었습니다).Doctrine MongoDB ODM : findAndUpdate() 후에 flush()를 호출해야하나요?

은이 명령은 원자 문서 (최대 하나)를 수정하고 그것을 반환 할 수 있습니다

findAndModify docs on mongodb.org 상태입니다.

Doctrine MongoDB's findAndUpdate() uses MongoDB's findAndModify. 한 번에 모든 것이 실제로 발생하는 것처럼 들리므로 문서 관리자에서 flush()을 호출 할 필요가 없습니다.

답변

2

플러시는 관리 대상 개체를 Mongo에 변경 사항을 쓰는 경우에만 필요합니다. 쿼리 작성기 인터페이스를 통해 수행하는 모든 작업은 직접 실행되고 UnitOfWork를 우회합니다. 이는 특히 업데이트 및 업셀의 경우에 해당됩니다. findAndUpdate()의 경우에는 즉시 Mongo에서 업데이트를 실행해야하지만 반환 된 객체가 관리 될 수 있다고 생각합니다. 나중에 (예 : setter 메소드를 통해) 해당 문서를 변경하면 Mongo에 다시 쓰길 원하면 flush()이 필요합니다.

쿼리 작성자의 returnNew()도 알 수 있습니다. new 옵션은 findAndModify입니다. 기본적으로 findAndUpdate()은 사전 업데이트 된 상태로 문서를 반환합니다. 업데이트 된 상태로 문서를 검색하는 것이 좋습니다.

+0

다시 한번 감사드립니다. 비트 코칩은 어디에서 보내야합니까? (또는 Dwolla, 또는 PayPal) –

관련 문제