diff --git a/project.clj b/project.clj index 713ec5c..bdf9747 100644 --- a/project.clj +++ b/project.clj @@ -4,7 +4,7 @@ :dependencies [[org.clojure/clojure "1.3.0"] [org.mongodb/mongo-java-driver "2.7.2"] [com.novemberain/validateur "1.0.0-SNAPSHOT"]] - :dev-dependencies [[org.clojure/data.json "0.1.2"] - [clj-time "0.3.2-SNAPSHOT" :exclusions [org.clojure/clojure]]] + :dev-dependencies [[org.clojure/data.json "0.1.2" :exclusions [org.clojure/clojure]] + [clj-time "0.3.3" :exclusions [org.clojure/clojure]]] :dev-resources-path "test/resources" :warn-on-reflection true) diff --git a/src/monger/collection.clj b/src/monger/collection.clj index 6c0421c..09430f7 100644 --- a/src/monger/collection.clj +++ b/src/monger/collection.clj @@ -142,7 +142,7 @@ ;; ;; monger.collection/count ;; -(defn ^long count +(defn count "Returns the number of documents in this collection. Takes optional conditions as an argument. @@ -150,12 +150,18 @@ (monger.collection/count collection) (monger.collection/count collection { :first_name \"Paul\" })" + (^long [^String collection] + (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] + (.count coll))) + (^long [^String collection, ^Map conditions] + (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] + (.count coll (to-db-object conditions))))) + +(defn any? ([^String collection] - (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.count coll))) + (> (count collection) 0)) ([^String collection, ^Map conditions] - (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.count coll (to-db-object conditions))))) + (> (count collection conditions) 0))) ;; monger.collection/update diff --git a/src/monger/util.clj b/src/monger/util.clj index 8651ab3..78707d7 100644 --- a/src/monger/util.clj +++ b/src/monger/util.clj @@ -41,4 +41,4 @@ IPersistentMap (get-id [^IPersistentMap object] - (or (:_id object) ("_id" object)))) + (or (:_id object) (object "_id")))) diff --git a/test/monger/test/collection.clj b/test/monger/test/collection.clj index b1c5ed7..9e5012f 100644 --- a/test/monger/test/collection.clj +++ b/test/monger/test/collection.clj @@ -46,6 +46,13 @@ (mgcol/insert "people" doc) (is (not (nil? (monger.util/get-id doc)))))) +(deftest insert-a-map-with-id-and-with-default-write-concern + (let [collection "people" + id (ObjectId.) + doc { :name "Joe", :age 30 "_id" id } + result (mgcol/insert "people" doc)] + (is (= id (monger.util/get-id doc))))) + ;; @@ -79,9 +86,13 @@ { :language "Clojure", :name "incanter" } { :language "Scala", :name "akka" }] ) (is (= 4 (mgcol/count collection))) + (is (mgcol/any? collection)) (is (= 3 (mgcol/count collection { :language "Clojure" }))) + (is (mgcol/any? collection { :language "Clojure" })) (is (= 1 (mgcol/count collection { :language "Scala" }))) - (is (= 0 (mgcol/count collection { :language "Python" }))))) + (is (mgcol/any? collection { :language "Scala" })) + (is (= 0 (mgcol/count collection { :language "Python" }))) + (is (not (mgcol/any? collection { :language "Python" }))))) (deftest remove-all-documents-from-collection