diff --git a/src/monger/collection.clj b/src/monger/collection.clj index 32cfdbe..7f9d9d4 100644 --- a/src/monger/collection.clj +++ b/src/monger/collection.clj @@ -19,21 +19,21 @@ ;; monger.collection/insert (defn ^WriteResult insert - ([^String collection, ^DBObject doc] + ([^String collection, ^DBObject document] (let [#^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.insert coll (to-db-object doc) monger.core/*mongodb-write-concern*))) - ([^String collection, ^DBObject doc, ^WriteConcern concern] + (.insert coll (to-db-object document) monger.core/*mongodb-write-concern*))) + ([^String collection, ^DBObject document, ^WriteConcern concern] (let [#^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.insert coll (to-db-object doc) concern)))) + (.insert coll (to-db-object document) concern)))) (defn ^WriteResult insert-batch - ([^String collection, ^List docs] + ([^String collection, ^List documents] (let [#^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.insert coll (to-db-object docs) WriteConcern/NORMAL))) - ([^String collection, ^List docs, ^WriteConcern concern] + (.insert coll (to-db-object documents) WriteConcern/NORMAL))) + ([^String collection, ^List documents, ^WriteConcern concern] (let [#^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.insert coll (to-db-object docs) concern)))) + (.insert coll (to-db-object documents) concern)))) ;; monger.collection/find (declare fields-to-db-object) @@ -59,8 +59,7 @@ ([^String collection, ^String id, ^List fields] (let [#^DBCollection coll (.getCollection monger.core/*mongodb-database* collection) map-of-fields (fields-to-db-object fields)] - (.findOne coll (to-db-object { :_id id }) (to-db-object map-of-fields)))) - ) + (.findOne coll (to-db-object { :_id id }) (to-db-object map-of-fields))))) @@ -83,6 +82,17 @@ (.update coll (to-db-object conditions) (to-db-object document) upsert multi write-concern))) +;; monger.collection/save + +(defn ^WriteResult save + ([^String collection, ^Map document] + (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] + (.save coll (to-db-object document) monger.core/*mongodb-write-concern*))) + ([^String collection, ^Map document, ^WriteConcern write-concern] + (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] + (.save coll document write-concern)))) + + ;; monger.collection/update-multi ;; monger.collection/remove @@ -92,8 +102,7 @@ (.remove coll (to-db-object {})))) ([^String collection, ^Map conditions] (let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)] - (.remove coll (to-db-object conditions)))) - ) + (.remove coll (to-db-object conditions))))) ;; monger.collection/ensure-index ;; monger.collection/drop-index diff --git a/test/monger/test/collection.clj b/test/monger/test/collection.clj index fa416f4..c8005bc 100644 --- a/test/monger/test/collection.clj +++ b/test/monger/test/collection.clj @@ -188,7 +188,7 @@ (deftest update-multiple-documents - (let [collection "libraries"] + (let [collection "libraries"] (monger.collection/remove collection) (monger.collection/insert collection { :language "Clojure", :name "monger" }) (monger.collection/insert collection { :language "Clojure", :name "langohr" }) @@ -201,3 +201,22 @@ (is (= 0 (monger.collection/count collection { :language "Clojure" }))) (is (= 1 (monger.collection/count collection { :language "Scala" }))) (is (= 3 (monger.collection/count collection { :language "Python" }))))) + + +(deftest save-a-new-document + (let [collection "people" + document { :name "Joe", :age 30 }] + (monger.collection/remove collection) + (is (monger.errors/ok? (monger.collection/save "people" document))) + (is (= 1 (monger.collection/count collection))))) + + +(deftest update-an-existing-document-using-save + (let [collection "people" + doc-id "people-1" + document { :_id doc-id, :name "Joe", :age 30 }] + (monger.collection/remove collection) + (is (monger.errors/ok? (monger.collection/insert "people" document))) + (is (= 1 (monger.collection/count collection))) + (monger.collection/save collection { :_id doc-id, :name "Alan", :age 40 }) + (is (= 1 (monger.collection/count collection { :name "Alan", :age 40 })))))