DoctrineMongoDBBundle:指定对Document Manager的读取首选项

时间:2015-03-13 20:55:58

标签: mongodb symfony doctrine-mongodb

我连接到仅配置为阅读的远程数据库。 如果我使用:

$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();

我收到此错误:

  

not master and slaveOk = false

如何为$ dm指定Read Preference,与MongoClient的工作方式相同?

提前致谢...

2 个答案:

答案 0 :(得分:1)

发现它! 我们必须在config.yml文件中指定readPreference属性。 希望这可以帮助其他人...

conn2:
   server: "%conn2_server%"
     options:
      connect: true
      db: "%conn2_options_db%"
      readPreference: secondary

答案 1 :(得分:1)

最好使用:

readPreference: secondaryPreferred

readPreference: primaryPreferred

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