Support bitmask DBCursor options, fixes #35

This commit is contained in:
Michael S. Klishin 2012-07-11 23:12:23 +04:00
parent 1b6cae729b
commit 9452862f0c
3 changed files with 22 additions and 2 deletions

View file

@ -1,5 +1,18 @@
## Changes between 1.1.0 and 1.2.0-alpha1 ## Changes between 1.1.0 and 1.2.0-alpha1
### Monger Query DSL now supports low level options on cursors
For example:
``` clojure
(with-collection coll
(find {})
(paginate :page 1 :per-page 3)
(sort { :title 1 })
(read-preference ReadPreference/PRIMARY)
(options com.mongodb.Bytes/QUERYOPTION_NOTIMEOUT))
```
### monger.collection/insert-and-return no longer forcefully replaces existing document id ### monger.collection/insert-and-return no longer forcefully replaces existing document id
`monger.collection/insert-and-return` now preserves existing document ids, just like `monger.collection/save-and-return` does. `monger.collection/insert-and-return` now preserves existing document ids, just like `monger.collection/save-and-return` does.

View file

@ -63,7 +63,7 @@
(merge (empty-query) { :collection coll }))) (merge (empty-query) { :collection coll })))
(defn exec (defn exec
[{ :keys [^DBCollection collection query fields skip limit sort batch-size hint snapshot read-preference keywordize-fields] :or { limit 0 batch-size 256 skip 0 } }] [{ :keys [^DBCollection collection query fields skip limit sort batch-size hint snapshot read-preference keywordize-fields options] :or { limit 0 batch-size 256 skip 0 } }]
(let [cursor (doto (.find collection (to-db-object query) (as-field-selector fields)) (let [cursor (doto (.find collection (to-db-object query) (as-field-selector fields))
(.limit limit) (.limit limit)
(.skip skip) (.skip skip)
@ -74,6 +74,8 @@
(.snapshot cursor)) (.snapshot cursor))
(when read-preference (when read-preference
(.setReadPreference cursor read-preference)) (.setReadPreference cursor read-preference))
(when options
(.setOptions cursor options))
(map (fn [x] (from-db-object x keywordize-fields)) (map (fn [x] (from-db-object x keywordize-fields))
cursor))) cursor)))
@ -117,6 +119,10 @@
[m ^ReadPreference rp] [m ^ReadPreference rp]
(merge m { :read-preference rp })) (merge m { :read-preference rp }))
(defn options
[m opts]
(merge m { :options opts }))
(defn keywordize-fields (defn keywordize-fields
[m bool] [m bool]
(merge m { :keywordize-fields bool })) (merge m { :keywordize-fields bool }))

View file

@ -231,7 +231,8 @@
(find {}) (find {})
(paginate :page 1 :per-page 3) (paginate :page 1 :per-page 3)
(sort { :title 1 }) (sort { :title 1 })
(read-preference ReadPreference/PRIMARY)) (read-preference ReadPreference/PRIMARY)
(options com.mongodb.Bytes/QUERYOPTION_NOTIMEOUT))
result2 (with-collection coll result2 (with-collection coll
(find {}) (find {})
(paginate :page 2 :per-page 3) (paginate :page 2 :per-page 3)