2016-05-12 60 views
2

我使用的是Mongo 2.6,Pymongo 2.7.2和Mongoengine 0.8.7。對於特定的閱讀查詢,我想使用我的副本集的輔助。因此,隨着mongoengine文檔here規定,我寫我的查詢如下:MongoEngine在查詢中指定讀取首選項

from pymongo.read_preferences import ReadPreference  
<collection_name>.objects().read_preference(ReadPreference.SECONDARY_PREFERRED) 

但是,查詢總是會似乎初級(此查詢的日誌總是隻看到在主)。語法是否正確?如果是的話,我該如何驗證是否查詢了輔助人員?

+0

可能是由於[此錯誤](https://github.com/MongoEngine/mongoengine/pull/1042)如果您鏈接另一種方法,如跳過,限制等。 –

+0

我與它鏈接在一起order_by方法,但我的Pymongo版本是2.7.2,並且該錯誤在任何版本> = 3.0。我想它也是在2.7.2中被破解的。 – Yahya

+0

該消息顯示「截至目前,該修補程序僅適用於pymongo ver <3.0」,所以我認爲受到影響的2.7和3+(儘管不同)。你可能想嘗試沒有order_by,仔細檢查。 –

回答

0

找出問題所在。在MongoEngine 「連接」方法,需要被指定的replicaSet參數如下:

connect(db = "my_db", replicaSet = "my_replica_set_name", host = "hostname", port = "port_number")

讀偏好的語法是正確的,因爲如上所述。傳入副本集參數使其工作。