如何使用Yii2从Mongodb辅助服务器读取数据

如何使用Yii2从Mongodb辅助服务器读取数据,mongodb,yii2,Mongodb,Yii2,我在yiisoft/yii2 mongodb扩展中遇到了一个问题我使用了三台mongodb服务器一台主服务器和两台辅助服务器,但在从辅助服务器获取数据时出现了如下错误 服务器给出以下错误 “名称”:“MongoDB异常”, “消息”:“非主控”, “代码”:10107, “类型”:“yii\mongodb\Exception my connection is as below ‘components’ => [ ‘mongodb’ => [ ‘cl

我在yiisoft/yii2 mongodb扩展中遇到了一个问题我使用了三台mongodb服务器一台主服务器和两台辅助服务器,但在从辅助服务器获取数据时出现了如下错误

服务器给出以下错误 “名称”:“MongoDB异常”, “消息”:“非主控”, “代码”:10107, “类型”:“yii\mongodb\Exception

my connection is as below
‘components’ => [
       ‘mongodb’ => [
           ‘class’ => ‘\yii\mongodb\Connection’,
           ‘dsn’ => ‘mongodb://xxx:27017,xxx:27017,xxx:27017/?replicaSet=p&connectTimeoutMS=480000&socketTimeoutMS=520000&readPreference=secondary’,
       ],
]

尝试向配置中添加如下选项:

'mongodb' => [
   'class' => '\yii\mongodb\Connection',
   'dsn' => 'mongodb://xxx:27017,xxx:27017,xxx:27017/?replicaSet=p&connectTimeoutMS=480000&socketTimeoutMS=520000&readPreference=secondary',
   'options' => [
        'replicaSet' => 'p'
    ]
]

此外,您可以直接在选项数组中添加连接选项,如connectTimeoutMS{“name”:“MongoDB Exception”,“message”:“not master”,“code”:10107,“type”:“yii\\MongoDB\\Exception”,“file”:“/home/ubuntu/panelapi/vendor/yiisoft/yii2 MongoDB/src/Command.php”,“line”:192,“stack trace”:[“#0/home/ubuntu/panelapi/vendor/yiisoft/yii2 mongodb/src/Command.php(357):yii\\mongodb\\Command->execute()”、“#1/home/ubuntu/panelapi/vendor/yiisoft/yii2 mongodb/src/Collection.php(153):yii\\mongodb\\Command->createindex('auth#item',数组)”、“#2/home/ubuntu/panelapi/common/components/MongodbManager.php(59):yii\\mongodb\\Collection->createIndex(Array,Array)“],“previous”:{“name”:“Exception”,“message”:“not master”,“code”:10107,“type”:“mongodb\\Driver\\Exception\\CommandException”,“file”:“/home/ubuntu/panelapi/vendor/yiisoft/yii2 mongodb/src/Command.php”,“line”:186,“堆栈跟踪”:[”#0/home/ubuntu/panelapi/vendor/yiisoft/yii2 mongodb/src/Command.php(186):mongodb\\Driver\\Manager->executeCommand('panelmanagement',Object(mongodb\\Driver\\Command),Object(mongodb\\Driver\\ReadPreference)),“,”1/home/ubuntu/panelapi/vendor/yiisoft/yii2 mongodb/src/Command.php(357):yii\\mongodb\\Command->execute(),]}我不认为它会起作用,我们可以像字符串一样传递,或者选项都是一样的,对吗?它应该是一样的,因为Yii创建了新的管理器实例-请参阅-并将选项作为第二个参数传递(将覆盖相同的uri参数)。您尝试过选项数组吗?