【问题标题】:How to deal with Mongodb connections by using DoctrineMongoDBBundle?如何使用 DoctrineMongoDBBundle 处理 Mongodb 连接?
【发布时间】:2014-01-25 16:57:31
【问题描述】:

我正在使用 DoctrineMongoDBBundle 管理数据的 Symfony 2 项目。 我需要处理两个或更多实例,但没有找到任何配置帮助。

文档解释了如何通过在 config.yml 文件中添加以下代码来配置一个默认连接。

doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true

并调用我使用该代码的文档管理器:

 $dm = $this->get('doctrine_mongodb')->getManager();

它工作得很好,但我没有找到如何配置更多连接以及如何使用文档管理器进行处理。我认为它应该看起来像以下来源,但我不知道如何调用特定的连接。

doctrine_mongodb:
    connections:
        default:
            server: mongodb://localhost:27017
            options: {}
        second:
            server: mongodb://localhost:27018
            options: {}
    default_database: test_database
    document_managers:
        default:
            auto_mapping: true
        second:
            auto_mapping: true

有什么想法吗?!

谢谢!

【问题讨论】:

    标签: mongodb doctrine-orm symfony-2.4


    【解决方案1】:

    此示例包含在捆绑包的config referenceMultiple Connections 部分中。每个连接和文档管理器都应该有一个唯一的名称,然后文档管理器配置应该引用适当的连接名称。我相信最后一点是您原始示例中缺少的内容。引用捆绑文档:

    doctrine_mongodb:
        default_database: hello_%kernel.environment%
        default_connection: conn2
        default_document_manager: dm2
        metadata_cache_driver: apc
        connections:
            conn1:
                server: mongodb://a.example.com:27017
            conn2:
                server: mongodb://b.example.com:27017
        document_managers:
            dm1:
                connection: conn1
                metadata_cache_driver: xcache
                mappings:
                    AcmeDemoBundle: ~
            dm2:
                connection: conn2
                mappings:
                    AcmeHelloBundle: ~
    

    我建议为您的连接和文档管理器使用“默认”以外的名称,以避免混淆。请注意,文档管理器名称现在将成为服务 ID 的一部分。根据上述配置,第二个连接和文档管理器将作为默认服务 ID 的别名(请参阅:default_connectiondefault_document_manager)。引用文档中的第二个示例,具体的服务 ID 将是:

    $conn1 = $container->get('doctrine_mongodb.odm.conn1_connection');
    $conn2 = $container->get('doctrine_mongodb.odm.conn2_connection');
    $dm1 = $container->get('doctrine_mongodb.odm.dm1_document_manager');
    $dm2 = $container->get('doctrine_mongodb.odm.dm2_document_manager');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 2020-07-10
      • 1970-01-01
      • 2019-12-10
      • 2020-07-26
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      相关资源
      最近更新 更多