使用Monger的MongoDB连接模式

时间:2014-05-30 01:14:08

标签: mongodb clojure monger

我是clojure的新手。

通过贩子连接到mongodb是否有任何习语/模式?

我是否必须使用

进行连接和断开连接
(monger.core/connect) & (monger.core/disconnect conn)

分别。每一次?

有没有办法可以重用连接池中的连接?

2 个答案:

答案 0 :(得分:6)

monger使用MongoClient,它执行连接池。在connect之后,您可以继续使用该池,直到完成为止,然后disconnect。有关支持的连接选项,请参阅monger documentation(例如,池中的最大连接数,默认为10)。

答案 1 :(得分:2)

我们只需要示例代码,对吗?该文档仅讨论通过let创建本地绑定的连接,因此这将帮助您入门:

(ns pipegen.core
    (:require [monger.core :as mg]
              [monger.collection :as mc]))

(def conn (atom (mg/connect-via-uri mongo-uri)))
(mc/insert (:db @conn) "collectionname" {:name "methuzula" :age 123})

我不清楚,从文档,mg/connect-via-uri的返回类型,所以我会简要提一下,以防它帮助某人:

{:conn #object[com.mongodb.MongoClient]
 :db   #object[com.mongodb.DB]}

如果将其保存到def,则可以根据需要重复使用。

附注,与您的问题关系不大,但可能会对您有所帮助:

这可能不是连接到dbs的最佳设计模式。以下是我喜欢阅读的依赖注入的一些设计模式,它提供了一些传递mongo连接上下文的更好的想法,阅读器Monad似乎特别酷,我必须自己尝试一下! http://software-ninja-ninja.blogspot.co.il/2014/04/5-faces-of-dependency-injection-in.html

另外,clojurians上的slack是一个友善的社区,直到经历了许多令人头疼的事情之后我才发现,请检查出来! https://clojurians.slack.com/