如何为mongodb设置默认提交选项?

时间:2012-05-31 23:05:11

标签: php mongodb symfony doctrine-odm

我在Symfony2应用程序中使用Doctrine MongoDB ODM。

如何设置默认提交选项(例如safe: 3fsync: true)?

理想情况下,我可以在我的YAML配置文件中执行此操作,但the docs seem to indicate this isn't possible

如果我可以get the Configuration object I should be able to set defaultCommitOptions(如fsync)那里,但我不确定如何/何时/何地这样做。

1 个答案:

答案 0 :(得分:2)

PR #114开始,您可以使用顶级配置选项default_commit_options。默认情况下,捆绑包将使用与ODM相同的值,即{safe: true}。以下是支持选项的快速示例:

doctrine_mongodb:
    default_commit_options:
        safe: 2      # boolean or positive integer for replication
        fsync: false # boolean 
        timeout: 10  # integer >= -1

有关详细信息,请查看DI扩展的Configuration类和单元测试。

对于旧版本的DoctrineMongoDBBundle,Configuration类已在服务容器中注册,这意味着您可以自己实现它。这样做的两个选项是在您自己的bundle中创建编译器传递并在服务定义上添加方法调用,或者,如果这太复杂,则访问运行时代码中的服务实例并直接调用setDefaultCommitOptions()

感兴趣的代码位于DoctrineMongoDBExtensionloadDocumentManager()方法中。从那里,您可以看到为每个Configuration实例分配的服务ID(每个DocumentManager存在一个)。我相信你也可以通过getConfiguration()方法获取DM的配置。