Introduce monger.collection/find-seq
For cases when you do not want to work with DBCursors but also do not need conversion to maps that monger.collection/find-maps does.
This commit is contained in:
parent
db6721ddab
commit
886a270bf9
2 changed files with 46 additions and 25 deletions
|
|
@ -63,6 +63,14 @@
|
|||
([^String collection, ^Map ref, ^List fields]
|
||||
(map (fn [x] (from-db-object x true)) (seq (find collection ref fields)))))
|
||||
|
||||
(defn ^ISeq find-seq
|
||||
([^String collection]
|
||||
(seq (find collection)))
|
||||
([^String collection, ^Map ref]
|
||||
(seq (find collection ref)))
|
||||
([^String collection, ^Map ref, ^List fields]
|
||||
(seq (find collection ref fields))))
|
||||
|
||||
;;
|
||||
;; monger.collection/find-one
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -94,9 +94,9 @@
|
|||
(let [collection "things"]
|
||||
(is (= 0 (mgcol/count collection)))
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }] )
|
||||
{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }] )
|
||||
(is (= 4 (mgcol/count collection)))
|
||||
(is (= 3 (mgcol/count collection { :language "Clojure" })))
|
||||
(is (= 1 (mgcol/count collection { :language "Scala" })))
|
||||
|
|
@ -106,9 +106,9 @@
|
|||
(deftest remove-all-documents-from-collection
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(is (= 4 (mgcol/count collection)))
|
||||
(mgcol/remove collection)
|
||||
(is (= 0 (mgcol/count collection)))))
|
||||
|
|
@ -117,9 +117,9 @@
|
|||
(deftest remove-some-documents-from-collection
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(is (= 4 (mgcol/count collection)))
|
||||
(mgcol/remove collection { :language "Clojure" })
|
||||
(is (= 1 (mgcol/count collection)))))
|
||||
|
|
@ -135,6 +135,10 @@
|
|||
cursor (mgcol/find collection)]
|
||||
(is (empty? (iterator-seq cursor)))))
|
||||
|
||||
(deftest find-document-seq-when-collection-is-empty
|
||||
(let [collection "docs"]
|
||||
(is (empty? (mgcol/find-seq collection)))))
|
||||
|
||||
|
||||
;;
|
||||
;; find-one
|
||||
|
|
@ -271,31 +275,40 @@
|
|||
(deftest find-multiple-documents
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(is (= 1 (monger.core/count (mgcol/find collection { :language "Scala" }))))
|
||||
(is (= 3 (.count (mgcol/find collection { :language "Clojure" }))))
|
||||
(is (empty? (mgcol/find collection { :language "Java" })))))
|
||||
|
||||
(deftest find-and-iterate-over-multiple-documents-the-hard-way
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(doseq [doc (take 3 (map (fn [dbo]
|
||||
(monger.conversion/from-db-object dbo true))
|
||||
(mgcol/find-seq collection { :language "Clojure" })))]
|
||||
(is (= "Clojure" (:language doc))))))
|
||||
|
||||
(deftest find-and-iterate-over-multiple-documents
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(doseq [doc (take 3 (map (fn [dbo]
|
||||
(monger.conversion/from-db-object dbo true))
|
||||
(iterator-seq (mgcol/find collection { :language "Clojure" }))))]
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(doseq [doc (take 3 (mgcol/find-maps collection { :language "Clojure" }))]
|
||||
(is (= "Clojure" (:language doc))))))
|
||||
|
||||
|
||||
(deftest find-multiple-maps
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(is (= 1 (clojure.core/count (mgcol/find-maps collection { :language "Scala" }))))
|
||||
(is (= 3 (.count (mgcol/find-maps collection { :language "Clojure" }))))
|
||||
(is (empty? (mgcol/find-maps collection { :language "Java" })))))
|
||||
|
|
@ -305,9 +318,9 @@
|
|||
(deftest find-multiple-partial-documents
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Clojure", :name "monger" }
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
{ :language "Clojure", :name "langohr" }
|
||||
{ :language "Clojure", :name "incanter" }
|
||||
{ :language "Scala", :name "akka" }])
|
||||
(let [scala-libs (mgcol/find collection { :language "Scala" } [:name])
|
||||
clojure-libs (mgcol/find collection { :language "Clojure"} [:language])]
|
||||
(is (= 1 (.count scala-libs)))
|
||||
|
|
@ -435,7 +448,7 @@
|
|||
(let [collection "widgets"]
|
||||
(mgcol/drop collection)
|
||||
(mgcol/insert-batch collection [{ :name "widget1" }
|
||||
{ :name "widget2" }])
|
||||
{ :name "widget2" }])
|
||||
(is (mgcol/exists? collection))
|
||||
(mgcol/drop collection)
|
||||
(is (false? (mgcol/exists? collection)))
|
||||
|
|
|
|||
Loading…
Reference in a new issue