在Clojure MongoDb驱动程序Monger中设置ReadPreference
在Monger中使用find maps时如何设置ReadPreference?Monger文档仅指定Monger.query集合的用法,如下所示在Clojure MongoDb驱动程序Monger中设置ReadPreference,mongodb,clojure,monger,Mongodb,Clojure,Monger,在Monger中使用find maps时如何设置ReadPreference?Monger文档仅指定Monger.query集合的用法,如下所示 (ns my.service.server (:refer-clojure :exclude [sort find]) (:require [monger.core :as mg] [monger.query :refer :all]) (:import com.mongodb.ReadPreference)) (let [conn
(ns my.service.server
(:refer-clojure :exclude [sort find])
(:require [monger.core :as mg]
[monger.query :refer :all])
(:import com.mongodb.ReadPreference))
(let [conn (mg/connect)
db (mg/get-db conn "monger-test")
coll "scores"]
;; reads from primary (master) to guarantee consistency
;; (at the cost of putting extra load on the primary)
(with-collection db coll
(find {:email "joe@example.com"})
(read-preference (ReadPreference/primary))))
一种方法是在连接Mongo时设置读取首选项:
(mg/connect
(mg/server-address "127.0.0.1" 27017)
(mg/mongo-options {:read-preference (com.mongodb.ReadPreference/secondaryPreferred)}))
如果您正在考虑在JavaAPI中使用此方法:我没有找到通过monger使用此方法的方法。但是,您可以滚动自己的函数以利用此API:
(defn find-with-read-preference [db coll]
(.find (doto
(.getCollection db (name coll))
(.setReadPreference (ReadPreference/secondaryPreferred)))))
(defn find-maps-with-read-preference
([^DB db ^String coll]
(with-open [result (find-with-read-preference db coll)]
(map (fn [x] (monger.conversion/from-db-object x true)) result))))
一种方法是在连接Mongo时设置读取首选项:
(mg/connect
(mg/server-address "127.0.0.1" 27017)
(mg/mongo-options {:read-preference (com.mongodb.ReadPreference/secondaryPreferred)}))
如果您正在考虑在JavaAPI中使用此方法:我没有找到通过monger使用此方法的方法。但是,您可以滚动自己的函数以利用此API:
(defn find-with-read-preference [db coll]
(.find (doto
(.getCollection db (name coll))
(.setReadPreference (ReadPreference/secondaryPreferred)))))
(defn find-maps-with-read-preference
([^DB db ^String coll]
(with-open [result (find-with-read-preference db coll)]
(map (fn [x] (monger.conversion/from-db-object x true)) result))))