php - Doctrine MongoDB ODM : must one call flush() after findAndUpdate()?

标签 php mongodb doctrine-odm

根据经验,在 findAndUpdate() 之后似乎不需要 flush() ,我只是在 Doctrine ODM/MongoDB 文档中找不到明确说明的地方(而且我没有费心去阅读太多源代码)。

findAndModify docs on mongodb.org状态

This command can be used to atomically modify a document (at most one) and return it.

Doctrine MongoDB's findAndUpdate() uses MongoDB's findAndModify 。所以听起来整个事情确实是一次性发生的,因此没有必要在文档管理器上调用 flush()

最佳答案

仅当将托管对象的更改写入 Mongo 时才需要刷新。您通过查询生成器界面执行的任何操作都将直接执行并绕过 UnitOfWork。对于更新和更新插入尤其如此。在 findAndUpdate() 的情况下,更新应该立即在 Mongo 中执行,但我相信返回的对象可能会被管理。如果您希望随后对该文档进行任何更改(例如通过 setter 方法),则需要使用 flush() 将其写回 Mongo。

此外,请注意查询生成器上的 returnNew(),它对应于 findAndModifynew 选项。默认情况下,我相信 findAndUpdate() 将返回更新前状态的文档。您可能更愿意检索更新状态的文档。

关于php - Doctrine MongoDB ODM : must one call flush() after findAndUpdate()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842727/

相关文章:

php - Doctrine mongoDB 只获取一个字段

java - 每个元素具有相同键的 DBObject 数组

mongodb - Doctrine MongoDB - 有没有办法从 JSON 构建查询?

PHP MYSQL - 合并来自另一个变量的查询

php - 无法使用 $_POST 传递隐藏的 PHP 值

c# - Mongo C#,查询所有文档,哪个数组包含特定元素

javascript - Javascript/MongoDB 中的 For 循环条件

php - 如何在 zf2 中使用户名不区分大小写

php - Laravel 5.1 检索多个输入值并插入到数据库

php - 网址未显示错误/PHP