monger/examples/basic_operations.clj
2011-09-11 14:40:46 +02:00

68 lines
2.5 KiB
Clojure

(ns examples.basic_operations
(:gen-class)
(:require [monger core collection util])
(:import (com.mongodb Mongo DB))
(: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
(let [
args *command-line-args*
parsed-args (cli args
(optional ["--port" "Mongodb port" :default 27017])
(optional ["--host" "Mongodb host" :default "localhost"])
(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")
))