DoctrineMongoDBBundle:指定文档管理器的读取首选项

DoctrineMongoDBBundle:指定文档管理器的读取首选项,mongodb,symfony,doctrine-mongodb,Mongodb,Symfony,Doctrine Mongodb,我正在连接一个仅配置为读取的远程数据库。 如果我使用: $connection = new \MongoClient($server); $dbname = $connection->selectDB("db"); $dbname->setReadPreference(\MongoClient::RP_SECONDARY); 它工作正常,但如果我尝试: $dm = $this->getDocumentManager

我正在连接一个仅配置为读取的远程数据库。 如果我使用:

$connection = new \MongoClient($server);                               
$dbname = $connection->selectDB("db");
$dbname->setReadPreference(\MongoClient::RP_SECONDARY);
它工作正常,但如果我尝试:

$dm = $this->getDocumentManager(); //using remote db connection in config
$result = $dm->getRepository('Repository')->method();
我得到这个错误:

非主从式OK=false

我如何指定$dm的读取首选项,就像它在MongoClient中工作一样

提前感谢…

找到了! 我们必须在config.yml文件中指定readPreference属性。 希望这能帮助其他人

conn2:
   server: "%conn2_server%"
     options:
      connect: true
      db: "%conn2_options_db%"
      readPreference: secondary
最好使用:

readPreference: secondaryPreferred

而不是简单的主节点或次节点,因为如果主节点或次节点不能使用首选选项,您仍然可以从其他节点检索数据

readPreference: primaryPreferred