我是clojure的新手。
通过贩子连接到mongodb是否有任何习语/模式?
我是否必须使用
进行连接和断开连接(monger.core/connect) & (monger.core/disconnect conn)
分别。每一次?
有没有办法可以重用连接池中的连接?
答案 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/