Adding basic operations documentation
This commit is contained in:
parent
2f82ac2bb6
commit
25a24a5231
2 changed files with 71 additions and 8 deletions
|
|
@ -1,16 +1,68 @@
|
||||||
(ns examples.basic_operations
|
(ns examples.basic_operations
|
||||||
(:gen-class)
|
(:gen-class)
|
||||||
(:require [monger.core])
|
(:require [monger core collection util])
|
||||||
(:import (com.mongodb Mongo DB))
|
(:import (com.mongodb Mongo DB))
|
||||||
(:use [clojure.tools.cli]))
|
(:use [clojure.tools.cli]))
|
||||||
|
|
||||||
|
;; Make mongodb-settings accessible from the monger.core namespace
|
||||||
|
(monger.util/with-ns 'monger.core
|
||||||
|
(def ^:dynamic *mongodb-settings*))
|
||||||
|
|
||||||
|
(defn fix-paul-maccartneys-name
|
||||||
|
"Fix Paul McCartney's name"
|
||||||
|
[]
|
||||||
|
(let [ paul_mccartney (monger.collection/find-one "people" { :first_name "Raul" }) ]
|
||||||
|
|
||||||
|
|
||||||
|
))
|
||||||
|
|
||||||
(do
|
(do
|
||||||
(let
|
(let [
|
||||||
[ args *command-line-args*
|
args *command-line-args*
|
||||||
parsed-args (cli args
|
parsed-args (cli args
|
||||||
(optional ["--port" "Mongodb port" :default 27017])
|
(optional ["--port" "Mongodb port" :default 27017])
|
||||||
(optional ["--host" "Mongodb host" :default "localhost"])
|
(optional ["--host" "Mongodb host" :default "localhost"])
|
||||||
(optional ["--db-name" :default "monger-example"])) ]
|
(optional ["--db-name" :default "monger-example"])) ]
|
||||||
))
|
|
||||||
|
|
||||||
|
;; Define Mongodb connection settings
|
||||||
|
|
||||||
|
(def ^:dynamic *mongodb-settings* parsed-args)
|
||||||
|
|
||||||
|
(monger.util/with-ns 'monger.core
|
||||||
|
;; Establish Mongodb connection
|
||||||
|
(defonce ^:dynamic *mongodb-connection* (monger.core/connect *mongodb-settings*))
|
||||||
|
;; Connect to the database
|
||||||
|
(defonce ^:dynamic *mongodb-database* (monger.core/get-db "monger-example")))
|
||||||
|
|
||||||
|
(println "Does people connection exist: " (monger.collection/exists? "people"))
|
||||||
|
|
||||||
|
;; Insert a record to people collection
|
||||||
|
(monger.collection/insert "people" { :first_name "John" :last_name "Lennon" })
|
||||||
|
|
||||||
|
;; Count an amount of records just inserted
|
||||||
|
(println "People collection is: " (monger.collection/count "people"))
|
||||||
|
|
||||||
|
;; Insert several records
|
||||||
|
(monger.collection/insert-batch "people" [{ :first_name "Ringo" :last_name "Starr" }
|
||||||
|
{ :first_name "Raul" :last_name "McCartney" }
|
||||||
|
{ :first_name "George" :last_name "Harrison" } ])
|
||||||
|
|
||||||
|
(println "People collection is: " (monger.collection/count "people"))
|
||||||
|
|
||||||
|
;; Fix a typo in the inserted record
|
||||||
|
(monger.collection/update "people" { :first_name "Raul" } { "$set" { :first_name "Paul" } })
|
||||||
|
|
||||||
|
(println (monger.collection/find-one "people" { :first_name "Paul" }))
|
||||||
|
|
||||||
|
;; Now, let's add the index to that record
|
||||||
|
(monger.collection/update "people" { :first_name "Paul" } { "$set" { :years_on_stage 1 } })
|
||||||
|
|
||||||
|
;; Increment record 45 times
|
||||||
|
(dotimes [n 45]
|
||||||
|
(monger.collection/update "people" { :first_name "Paul" } { "$inc" { :years_on_stage 1 } }))
|
||||||
|
|
||||||
|
(println (monger.collection/find-one "people" { :first_name "Paul" }))
|
||||||
|
|
||||||
|
;; Remove people collection
|
||||||
|
(monger.collection/drop "people")
|
||||||
|
))
|
||||||
|
|
|
||||||
|
|
@ -130,6 +130,17 @@
|
||||||
;; monger.collection/update
|
;; monger.collection/update
|
||||||
|
|
||||||
(defn ^WriteResult update
|
(defn ^WriteResult update
|
||||||
|
"Please note that update is potentially destructive operation. It will update your document with the given set
|
||||||
|
emptying the fields not mentioned in (^Map document). In order to only change certain fields, please use
|
||||||
|
\"$set\", for example:
|
||||||
|
|
||||||
|
(monger.collection/update \"people\" { :first_name \"Raul\" } { \"$set\" { :first_name \"Paul\" } })
|
||||||
|
|
||||||
|
You can use all the Mongodb Modifier Operations here, as well:
|
||||||
|
|
||||||
|
(monger.collection/update \"people\" { :first_name \"Paul\" } { \"$set\" { :index 1 } })
|
||||||
|
(monger.collection/update \"people\" { :first_name \"Paul\" } { \"$inc\" { :index 5 } })"
|
||||||
|
|
||||||
[^String collection, ^Map conditions, ^Map document, & { :keys [upsert multi write-concern] :or { upsert false, multi false, write-concern monger.core/*mongodb-write-concern* } }]
|
[^String collection, ^Map conditions, ^Map document, & { :keys [upsert multi write-concern] :or { upsert false, multi false, write-concern monger.core/*mongodb-write-concern* } }]
|
||||||
(let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)]
|
(let [^DBCollection coll (.getCollection monger.core/*mongodb-database* collection)]
|
||||||
(.update coll (to-db-object conditions) (to-db-object document) upsert multi write-concern)))
|
(.update coll (to-db-object conditions) (to-db-object document) upsert multi write-concern)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue