Add read preference support for monger.query DSL
This commit is contained in:
parent
ef3c224441
commit
1cb024dcad
2 changed files with 13 additions and 7 deletions
|
|
@ -2,7 +2,7 @@
|
|||
(:refer-clojure :exclude [select find sort])
|
||||
(:require [monger.core]
|
||||
[monger.internal pagination])
|
||||
(:import [com.mongodb DB DBCollection DBObject DBCursor]
|
||||
(:import [com.mongodb DB DBCollection DBObject DBCursor ReadPreference]
|
||||
[java.util List])
|
||||
(:use [monger conversion operators]))
|
||||
|
||||
|
|
@ -52,16 +52,17 @@
|
|||
(to-db-object (zipmap fields (repeat 1))))
|
||||
|
||||
(defn exec
|
||||
[{ :keys [collection query fields skip limit sort batch-size hint snapshot] :or { limit 0 batch-size 256 skip 0 } }]
|
||||
[{ :keys [collection query fields skip limit sort batch-size hint snapshot read-preference] :or { limit 0 batch-size 256 skip 0 } }]
|
||||
(let [cursor (doto ^DBCursor (.find ^DBCollection collection (to-db-object query) (fields-to-db-object fields))
|
||||
(.limit limit)
|
||||
(.skip skip)
|
||||
(.sort (to-db-object sort))
|
||||
(.batchSize batch-size)
|
||||
(.hint ^DBObject (to-db-object hint))
|
||||
)]
|
||||
(if snapshot
|
||||
(.hint ^DBObject (to-db-object hint)))]
|
||||
(when snapshot
|
||||
(.snapshot cursor))
|
||||
(when read-preference
|
||||
(.setReadPreference cursor read-preference))
|
||||
(map (fn [x] (from-db-object x true))
|
||||
(seq cursor))))
|
||||
|
||||
|
|
@ -101,6 +102,10 @@
|
|||
[m]
|
||||
(merge m { :snapshot true }))
|
||||
|
||||
(defn read-preference
|
||||
[m ^ReadPreference rp]
|
||||
(merge m { :read-preference rp }))
|
||||
|
||||
(defn paginate
|
||||
[m & { :keys [page per-page] :or { page 1 per-page 10 } }]
|
||||
(merge m { :limit per-page :skip (monger.internal.pagination/offset-for page per-page) }))
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
(ns monger.test.querying
|
||||
(:refer-clojure :exclude [select find sort])
|
||||
(:import [com.mongodb WriteResult WriteConcern DBCursor DBObject CommandResult$CommandFailure]
|
||||
(:import [com.mongodb WriteResult WriteConcern DBCursor DBObject CommandResult$CommandFailure ReadPreference]
|
||||
[org.bson.types ObjectId]
|
||||
[java.util Date])
|
||||
(:require [monger core util]
|
||||
|
|
@ -189,7 +189,8 @@
|
|||
result1 (with-collection coll
|
||||
(find {})
|
||||
(paginate :page 1 :per-page 3)
|
||||
(sort { :title 1 }))
|
||||
(sort { :title 1 })
|
||||
(read-preference ReadPreference/PRIMARY))
|
||||
result2 (with-collection coll
|
||||
(find {})
|
||||
(paginate :page 2 :per-page 3)
|
||||
|
|
|
|||
Loading…
Reference in a new issue