3

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

$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 的工作方式相同?

提前致谢...

4

2 回答 2

1

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

conn2:
   server: "%conn2_server%"
     options:
      connect: true
      db: "%conn2_options_db%"
      readPreference: secondary
于 2015-03-13T21:13:55.013 回答
1

最好使用:

readPreference: secondaryPreferred

或者

readPreference: primaryPreferred

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

于 2016-08-03T08:26:00.390 回答