clojure 连接 mongodb示例

project.clj 文件添加monger依赖: [com.novemberain/monger "1.5.0"]

[css] view plaincopy print?
  1. (defproject myClojure "0.1.0-SNAPSHOT"
  2. :description "FIXME: write description"
  3. :url "http://example.com/FIXME"
  4. :license {:name "Eclipse Public License"
  5. :url "http://www.eclipse.org/legal/epl-v10.html"}
  6. :dependencies [
  7. [org.clojure/clojure "1.5.1"]
  8. [org.clojure/java.jdbc "0.0.6"]
  9. [org.clojure/clojure-contrib "1.2.0"]
  10. [mysql/mysql-connector-java "5.1.26"]
  11. [com.novemberain/monger "1.5.0"]
  12. ])

示例代码:

[python] view plaincopy print?
  1. ; clojure connect to mysql
  2. ; ithomer.net
  3. ; 2013.12.10
  4. (ns myClojure.mongo3
  5. (:use [monger.core :only [connect! connect set-db! get-db]])
  6. (:require [monger.core :as mg]
  7. [monger.collection :as mc]))
  8. ;; 函数
  9. (defn -main[& m]
  10. ;;  (connect!) ;; 默认连接库 { :host "localhost" :port 27017 }
  11. (connect! { :host "172.27.22.21" :port 27017})    ; 指定 host 和 port
  12. (set-db! (mg/get-db "homer-db"))
  13. ;; 清空collection
  14. (mc/remove "workflow")
  15. ;; 单条插入
  16. (mc/insert "workflow" {:name "blog"  :url "http://blog.ithomer.net" :copyright  "ithomer" :dtime "2009-07-31"})
  17. (mc/insert "workflow" {:name "forum" :url "http://blog.ithomer.net" :copyright  "ithomer" :dtime "2013-12-01" })
  18. ;; 批量插入
  19. (mc/insert-batch "workflow" [{:name "csdn"   :url "http://blog.csdn.net/ithomer"     :copyright  "ithomer" :dtime "2010-01-01" }
  20. {:name "csdn2"  :url "http://blog.csdn.net/sunboy_2050" :copyright  "ithomer" :dtime "2012-06-30" }])
  21. ;; 全量查询
  22. (doseq [item (map list (mc/find-maps "workflow"))]
  23. (println item))
  24. ;; 条件查询
  25. (println)   ;; 空一行
  26. (doseq [item (mc/find-one "workflow" { :name "blog" })]
  27. (println item))
  28. (println (mc/find-one "workflow" { :name "blog" }))
  29. ;; 更新
  30. (mc/update "workflow" {:name "csdn"} {:copyright "yanggang"} :upsert true)
  31. ;; 删除
  32. (mc/remove "workflow" { :name "csdn2" })
  33. ;; 全量查询删除后的结果
  34. (println)
  35. (doseq [item (map list (mc/find-maps "workflow"))]
  36. (println item))
  37. ;; 关闭连接
  38. (monger.core/disconnect!)
  39. )
  40. ; 执行函数
  41. (-main)

运行结果:

[html] view plaincopy print?
  1. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddb>, :copyright ithomer, :name blog, :dtime 2009-07-31, :url http://blog.ithomer.net})
  2. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddc>, :copyright ithomer, :name forum, :dtime 2013-12-01, :url http://blog.ithomer.net})
  3. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddd>, :copyright ithomer, :name csdn, :dtime 2010-01-01, :url http://blog.csdn.net/ithomer})
  4. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9dde>, :copyright ithomer, :name csdn2, :dtime 2012-06-30, :url http://blog.csdn.net/sunboy_2050})
  5. #<Entry _id=52a6a9e1e4b0e53f523a9ddb>
  6. #<Entry copyright=ithomer>
  7. #<Entry name=blog>
  8. #<Entry dtime=2009-07-31>
  9. #<Entry url=http://blog.ithomer.net>
  10. #<BasicDBObject { "_id" : { "$oid" : "52a6a9e1e4b0e53f523a9ddb"} , "copyright" : "ithomer" , "name" : "blog" , "dtime" : "2009-07-31" , "url" : "http://blog.ithomer.net"}>
  11. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddb>, :copyright ithomer, :name blog, :dtime 2009-07-31, :url http://blog.ithomer.net})
  12. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddc>, :copyright ithomer, :name forum, :dtime 2013-12-01, :url http://blog.ithomer.net})
  13. ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddd>, :copyright yanggang})

mongo数据库内容:

参考推荐:

Monger, a Clojure client for MongoDB

clojure简单操作mongo

Clojure 学习入门(8)- 连接mongodb相关推荐

  1. Clojure 学习入门(8)—— 连接mongodb

    clojure 连接 mongodb示例 project.clj 文件添加monger依赖: [com.novemberain/monger "1.5.0"] (defprojec ...

  2. Clojure 学习入门(6)- 函数定义

    一.创建函数:  fn: fn是一个宏,用于定义一个简单的函数,如下:  [python] view plaincopy print? user=> (fn [] "hello&quo ...

  3. Clojure 学习入门(6)—— 函数定义

    一.创建函数: fn: fn是一个宏,用于定义一个简单的函数,如下:  user=> (fn [] "hello") #<user$eval375$fn__376 us ...

  4. Clojure 学习入门(9)- 连接redis

    clojure 连接 Redis 示例 project.cli 添加redis依赖: [clj-redis "0.0.12"] [delphi] view plaincopy pr ...

  5. Clojure 学习入门(7)- 连接mysql

    Clojure的contrib包中实现了对现有JDBC的封装,在wiki上有连接,该页面上包含了对不同的数据库的连接方法和基本的操作,但是这个页面上没有提供足够的信息,足够一个初学者能够使用Cloju ...

  6. Clojure 学习入门(1) - 学习资料

    转自:http://blog.csdn.net/ithomer/article/details/17225813 Clojure(发音类似"closure",['kləʊʒə(r) ...

  7. Clojure 学习入门(13)- binding

    Clojure里面是不支持变量的.Binding跟变量有点像,但是在被赋值之前是不允许改的,包括:全局binding, 线程本地(thread local)binding, 以及函数内的本地bindi ...

  8. Clojure 学习入门(10)- httpkit

    Http-kit 是主要由Java 和 Clojure开发,为Clojure定制的零依赖的HTTP lib,仅用3000多行代码,实现了高性能 Server,Client,Timer.代码量少,实现简 ...

  9. Clojure 学习入门(18)—— 数据类型

    如何表示和处理数据 Clojure是一种动态类型语言,这意味着你在程序中永远不需要明确定义符号.函数.或者参数的数据类型.但是,所有的值仍然有一个类型.字符串时是字符串,数字是数字,列表是列表,等等. ...

最新文章

  1. 添加Page_Init事件
  2. 每日一皮:完美解释 UDP 为什么会丢包...
  3. 如何创建并运行java线程
  4. 深入探究VC —— 链接器link.exe(4)【转】http://blog.csdn.net/wangningyu/article/details/4849452...
  5. 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
  6. Application对象 简单的聊天室
  7. 初次使用nginx 搭建http2.0
  8. 点击按钮重新加载ajax,Jquery AJAX点击链接,然后重新加载页面
  9. beetl html 转义,beetl 前端
  10. java uml下划线_Java UML类图
  11. android studio systrace,android – Systrace输出错误
  12. CSS 基础3(内边距、外边距、边距模型)
  13. xp系统怎么弄清微软服务器名称,xp系统如何做远程服务器呢
  14. 零界之痕服务器维护,零界之痕测试服
  15. 1个英文字母、1个汉字、标点符号各占几个字节?以及文件的编码方式查看
  16. python如何下载安装spacy_SpaCy下载及安装
  17. 【小沐学C++】C++17实现文件操作<filesystem>
  18. 直接调节风扇转速的Windows开源工具--Open Hardware Monitor
  19. 微服务RESTful 接口设计规范
  20. Docker使用入门

热门文章

  1. IIS 500 错误解决
  2. javascript中引号嵌套
  3. IronPython 小试牛角
  4. 《零基础入门深度学习》解读
  5. python字典长度可变吗_[python] 根据字典中的信息生成列表,每次都会额外变长。...
  6. python安装在什么地方_python模块安装目录在哪里
  7. gms签名不一致_电子签名拍照-多媒体互动装置介绍「振邦视界」
  8. i3处理器能运行python吗_老cpu(10年前的core i3 不支持avx指令集)安装tensorflow2.0...
  9. PHP实现微信企业付款
  10. 2018 牛客多校 2