2015-11-11 54 views
0

我正在使用貓鼬來連接mongo(v3.04)副本集,並且我想將所有請求傳播到集合中的所有節點。但是,這樣做像下面後,我的中學從來沒有被擊中,我的連接字符串和選項,如下所示:如何在mongoose中設置mongodb副本集讀取首選項?

let connectionString = 'mongodb://ip1:27017/db, ip2:27017/db'; 
mongoose.connect(connectionString, { 
    server: { 
     socketOptions: {keepAlive: 1}, 
     readPreference: "nearest", 
     strategy: "ping" 
    }, 
    replset: { 
     rs_name: 'ReplicaSet', 
     socketOptions: {keepAlive: 1}, 
     strategy: 'ping', 
     readPreference: 'nearest', 
     poolSize: 10 
    } 
}); 

它看起來像貓鼬完全忽視我通過了readPreference設置。我已經嘗試了很多這裏提到的方法,但到目前爲止沒有運氣。任何人都可以給我一個提示?

+0

* >>但我的中學從未受到傷害* <<你是什麼意思?你期望看到的是什麼沒有發生? –

+0

我想將查詢擴展到副本集中的所有節點。或者我想通過貓鼬選項來控制閱讀偏好。 – Ron

+0

請求?你不是說要讀嗎?只有閱讀可以從非初選獲得,是你的問題嗎? – Sammaye

回答

6

readPreference: 'nearest'意味着客戶將ping通連接的所有副本集成員和解決所有未來的讀取,其響應速度最快的一個。 MongoDB客戶端通常不會隨機地在主和次之間切換。

當你希望他們從二級閱讀,使用readPreference: 'secondaryPreferred'

+0

因爲默認情況下,它是主要的,在我設置到最近的時候,它仍然像以前一樣工作。 – Ron

+0

請注意關於此的文檔:「無論成員的類型如何,操作都從具有最少網絡延遲的副本集的成員讀取。」 https://docs.mongodb.org/manual/reference/read-preference/#nearest – Sammaye

+0

還請注意Stennie的答案:http://stackoverflow.com/a/20850805/383478 – Sammaye