Clojure 学习入门(8)- 连接mongodb
project.clj 文件添加monger依赖: [com.novemberain/monger "1.5.0"]
- (defproject myClojure "0.1.0-SNAPSHOT"
- :description "FIXME: write description"
- :url "http://example.com/FIXME"
- :license {:name "Eclipse Public License"
- :url "http://www.eclipse.org/legal/epl-v10.html"}
- :dependencies [
- [org.clojure/clojure "1.5.1"]
- [org.clojure/java.jdbc "0.0.6"]
- [org.clojure/clojure-contrib "1.2.0"]
- [mysql/mysql-connector-java "5.1.26"]
- [com.novemberain/monger "1.5.0"]
- ])
示例代码:
- ; clojure connect to mysql
- ; ithomer.net
- ; 2013.12.10
- (ns myClojure.mongo3
- (:use [monger.core :only [connect! connect set-db! get-db]])
- (:require [monger.core :as mg]
- [monger.collection :as mc]))
- ;; 函数
- (defn -main[& m]
- ;; (connect!) ;; 默认连接库 { :host "localhost" :port 27017 }
- (connect! { :host "172.27.22.21" :port 27017}) ; 指定 host 和 port
- (set-db! (mg/get-db "homer-db"))
- ;; 清空collection
- (mc/remove "workflow")
- ;; 单条插入
- (mc/insert "workflow" {:name "blog" :url "http://blog.ithomer.net" :copyright "ithomer" :dtime "2009-07-31"})
- (mc/insert "workflow" {:name "forum" :url "http://blog.ithomer.net" :copyright "ithomer" :dtime "2013-12-01" })
- ;; 批量插入
- (mc/insert-batch "workflow" [{:name "csdn" :url "http://blog.csdn.net/ithomer" :copyright "ithomer" :dtime "2010-01-01" }
- {:name "csdn2" :url "http://blog.csdn.net/sunboy_2050" :copyright "ithomer" :dtime "2012-06-30" }])
- ;; 全量查询
- (doseq [item (map list (mc/find-maps "workflow"))]
- (println item))
- ;; 条件查询
- (println) ;; 空一行
- (doseq [item (mc/find-one "workflow" { :name "blog" })]
- (println item))
- (println (mc/find-one "workflow" { :name "blog" }))
- ;; 更新
- (mc/update "workflow" {:name "csdn"} {:copyright "yanggang"} :upsert true)
- ;; 删除
- (mc/remove "workflow" { :name "csdn2" })
- ;; 全量查询删除后的结果
- (println)
- (doseq [item (map list (mc/find-maps "workflow"))]
- (println item))
- ;; 关闭连接
- (monger.core/disconnect!)
- )
- ; 执行函数
- (-main)
运行结果:
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddb>, :copyright ithomer, :name blog, :dtime 2009-07-31, :url http://blog.ithomer.net})
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddc>, :copyright ithomer, :name forum, :dtime 2013-12-01, :url http://blog.ithomer.net})
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddd>, :copyright ithomer, :name csdn, :dtime 2010-01-01, :url http://blog.csdn.net/ithomer})
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9dde>, :copyright ithomer, :name csdn2, :dtime 2012-06-30, :url http://blog.csdn.net/sunboy_2050})
- #<Entry _id=52a6a9e1e4b0e53f523a9ddb>
- #<Entry copyright=ithomer>
- #<Entry name=blog>
- #<Entry dtime=2009-07-31>
- #<Entry url=http://blog.ithomer.net>
- #<BasicDBObject { "_id" : { "$oid" : "52a6a9e1e4b0e53f523a9ddb"} , "copyright" : "ithomer" , "name" : "blog" , "dtime" : "2009-07-31" , "url" : "http://blog.ithomer.net"}>
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddb>, :copyright ithomer, :name blog, :dtime 2009-07-31, :url http://blog.ithomer.net})
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddc>, :copyright ithomer, :name forum, :dtime 2013-12-01, :url http://blog.ithomer.net})
- ({:_id #<ObjectId 52a6a9e1e4b0e53f523a9ddd>, :copyright yanggang})
mongo数据库内容:
参考推荐:
Monger, a Clojure client for MongoDB
clojure简单操作mongo
Clojure 学习入门(8)- 连接mongodb相关推荐
- Clojure 学习入门(8)—— 连接mongodb
clojure 连接 mongodb示例 project.clj 文件添加monger依赖: [com.novemberain/monger "1.5.0"] (defprojec ...
- Clojure 学习入门(6)- 函数定义
一.创建函数: fn: fn是一个宏,用于定义一个简单的函数,如下: [python] view plaincopy print? user=> (fn [] "hello&quo ...
- Clojure 学习入门(6)—— 函数定义
一.创建函数: fn: fn是一个宏,用于定义一个简单的函数,如下: user=> (fn [] "hello") #<user$eval375$fn__376 us ...
- Clojure 学习入门(9)- 连接redis
clojure 连接 Redis 示例 project.cli 添加redis依赖: [clj-redis "0.0.12"] [delphi] view plaincopy pr ...
- Clojure 学习入门(7)- 连接mysql
Clojure的contrib包中实现了对现有JDBC的封装,在wiki上有连接,该页面上包含了对不同的数据库的连接方法和基本的操作,但是这个页面上没有提供足够的信息,足够一个初学者能够使用Cloju ...
- Clojure 学习入门(1) - 学习资料
转自:http://blog.csdn.net/ithomer/article/details/17225813 Clojure(发音类似"closure",['kləʊʒə(r) ...
- Clojure 学习入门(13)- binding
Clojure里面是不支持变量的.Binding跟变量有点像,但是在被赋值之前是不允许改的,包括:全局binding, 线程本地(thread local)binding, 以及函数内的本地bindi ...
- Clojure 学习入门(10)- httpkit
Http-kit 是主要由Java 和 Clojure开发,为Clojure定制的零依赖的HTTP lib,仅用3000多行代码,实现了高性能 Server,Client,Timer.代码量少,实现简 ...
- Clojure 学习入门(18)—— 数据类型
如何表示和处理数据 Clojure是一种动态类型语言,这意味着你在程序中永远不需要明确定义符号.函数.或者参数的数据类型.但是,所有的值仍然有一个类型.字符串时是字符串,数字是数字,列表是列表,等等. ...
最新文章
- 添加Page_Init事件
- 每日一皮:完美解释 UDP 为什么会丢包...
- 如何创建并运行java线程
- 深入探究VC —— 链接器link.exe(4)【转】http://blog.csdn.net/wangningyu/article/details/4849452...
- 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
- Application对象 简单的聊天室
- 初次使用nginx 搭建http2.0
- 点击按钮重新加载ajax,Jquery AJAX点击链接,然后重新加载页面
- beetl html 转义,beetl 前端
- java uml下划线_Java UML类图
- android studio systrace,android – Systrace输出错误
- CSS 基础3(内边距、外边距、边距模型)
- xp系统怎么弄清微软服务器名称,xp系统如何做远程服务器呢
- 零界之痕服务器维护,零界之痕测试服
- 1个英文字母、1个汉字、标点符号各占几个字节?以及文件的编码方式查看
- python如何下载安装spacy_SpaCy下载及安装
- 【小沐学C++】C++17实现文件操作<filesystem>
- 直接调节风扇转速的Windows开源工具--Open Hardware Monitor
- 微服务RESTful 接口设计规范
- Docker使用入门
热门文章
- IIS 500 错误解决
- javascript中引号嵌套
- IronPython 小试牛角
- 《零基础入门深度学习》解读
- python字典长度可变吗_[python] 根据字典中的信息生成列表,每次都会额外变长。...
- python安装在什么地方_python模块安装目录在哪里
- gms签名不一致_电子签名拍照-多媒体互动装置介绍「振邦视界」
- i3处理器能运行python吗_老cpu(10年前的core i3 不支持avx指令集)安装tensorflow2.0...
- PHP实现微信企业付款
- 2018 牛客多校 2