2016-05-12 24 views
2

Ich benutze Mongo 2.6, Pymongo 2.7.2 und Mongoengine 0.8.7. Für eine bestimmte Leseabfrage möchte ich die Sekundärversion meines Replikatsatzes verwenden. Daher wird, wie angegeben here in der mongoengine Dokumentation schrieb ich meine Abfrage wie folgt:MongoEngine Spezifizieren Lese Präferenz auf Abfrage

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

Allerdings wird die Abfrage immer auf die Primär geht es scheint (Die Protokolle für diese Abfrage immer nur in der primären zu sehen sind). Ist die Syntax korrekt? Wenn ja, wie überprüfe ich, ob die Sekundärseite abgefragt wird?

+0

Könnte auf [dieser Fehler] (https://github.com/MongoEngine/mongoengine/pull/1042) zurückzuführen sein, wenn Sie eine andere Methode wie überspringen, begrenzen usw. –

+0

verketten ich es mit der order_by Methode aber meine Pymongo Version ist 2.7.2 und der Fehler ist in jeder Version> = 3.0. Ich denke, es ist auch in 2.7.2 gebrochen. – Yahya

+0

Die Meldung lautet: "Ab sofort funktioniert der Fix nur für Pymongo ver <3.0.", Also dachte ich, dass sowohl 2,7 als auch 3+ betroffen waren (wenn auch anders). Sie können versuchen, ohne order_by, um zu überprüfen. –

Antwort

0

Herausgefunden, was das Problem war. Im MongoEngine "connect" Methode, die replicaSet Parameter angegeben werden müssen, wie folgt:

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

Die Syntax der Lese Präferenz korrekt ist, wie oben angegeben. Passing in der replicaSet Parameter hat es funktioniert.