私はclojureが初めてです。
monger を介して mongodb に接続する際のイディオム/パターンはありますか?
を使用して接続および切断する必要がありますか
(monger.core/connect) & (monger.core/disconnect conn)
それぞれ。毎回 ?
接続プールから接続を再利用する方法はありますか?
monger は、接続プールを行う MongoClient を使用します。その後connect
、完了するまでそのプールで作業を続けることができますdisconnect
。サポートされている接続オプションについては、 monger のドキュメントを参照してください(例: プール内の接続の最大数、デフォルトは 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
、必要に応じて再利用できます。
サイドノート、質問とはあまり関係ありませんが、おそらく役立つでしょう:
これは、データベースへの接続に最適な設計パターンではない可能性があります。以下は、私が楽しく読んだ依存性注入の設計パターンです。mongo 接続コンテキストを渡すためのより良いアイデアが得られます。Reader Monad は特にクールに思えます。自分で試してみる必要があります。http://software-ninja-ninja.blogspot.co.il/2014/04/5-faces-of-dependency-injection-in.html
また、clojurians
onslack
は友好的なコミュニティであり、clojure で何度も頭痛の種になるまで知りませんでした。チェックしてみてください! https://clojurians.slack.com/