【发布时间】:2016-02-28 01:05:02
【问题描述】:
我是clojure的新手。
有没有关于通过monger连接mongodb的习惯用法/模式?
我是否必须使用
进行连接和断开连接(monger.core/connect) & (monger.core/disconnect conn)
分别。每次?
有没有办法可以重用连接池中的连接?
【问题讨论】:
我是clojure的新手。
有没有关于通过monger连接mongodb的习惯用法/模式?
我是否必须使用
进行连接和断开连接(monger.core/connect) & (monger.core/disconnect conn)
分别。每次?
有没有办法可以重用连接池中的连接?
【问题讨论】:
monger 使用 MongoClient,它执行连接池。在connect 之后,您可以继续使用该池直到完成,然后再使用disconnect。请参阅monger documentation 了解支持的连接选项(例如池中的最大连接数,默认为 10)。
【讨论】:
我们只需要示例代码,对吧?该文档仅讨论通过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 连接上下文的想法,Reader Monad 看起来特别酷,我必须自己尝试一下! http://software-ninja-ninja.blogspot.co.il/2014/04/5-faces-of-dependency-injection-in.html
另外,slack 上的 clojurians 是一个友好的社区,直到我对 clojure 感到头疼之后才发现,看看他们吧! https://clojurians.slack.com/
【讨论】:
atom 而不是直接放入var?