In the documentation,mongodb連接建立一次,在使用之前不會將連接傳遞給每個命令,是使用monger的正確方法,還是應該將數據庫連接傳遞給每個調用?使用monger時,我是否需要提供連接每個請求?
1
A
回答
2
如果使用單個數據庫工作那麼最好設置一次連接:
(mg/connect! db-spec)
但它不是,當你有多個數據庫是一個好主意。蒙格有這種情況with-connection
宏(see API docs):
(mg/with-connection db-connection
...)
您可能您的應用程序的初始化過程中建立的所有連接一次:
(def conn1 (mg/connect db-spec))
,然後使用它們:
(mg/with-connection conn1
...)
更新。在我們的應用程序,我們有所有的數據庫連接的哈希地圖:
(def ^:dynamic
^clojure.lang.PersistentArrayMap
*connections*
{})
(defn connect! [db]
{:pre [(contains? mongo-config db)]}
(if (-> db *connections* nil?)
(let [conn (mg/connect (get mongo-config db))]
(alter-var-root #'*connections*
assoc
db
{ :conn conn
:db (mg/get-db conn (name db))})))
(-> *connections* db :conn))
(defmacro with-db [db & body]
"Eval body using :amonplus or :statistic db"
`(mg/with-connection (connect! ~db)
(mg/with-db (clojure.core/-> *connections* ~db :db)
[email protected])))
mongo-config
變量存儲規範我們的所有數據庫和with-db
宏很容易通過它們的名字來訪問它們:
(with-db :my-db
...)
0
現在(版本2.0)對於所有關鍵公共API函數都必須使用顯式DB /連接/ GridFS對象。
這樣:
(require '[monger.collection :as mc])
(mc/insert db "libraries" {:name "Monger"})
爲了得到這個工作:
(let [conn (mg/connect)
db (mg/get-db conn "monger-test")]
(mc/insert db "libraries" {:name "Monger"}))
如何使用翻過我的所有代碼的 「DB」 的參考。
相關問題
- 1. Facebook連接:我是否需要每個域的應用ID?
- 2. 每次我提出AWS請求時,是否需要計算簽名?
- 3. 我是否需要提供每個回覆中的所有鏈接?
- 4. 我使用時是否需要關閉連接?
- 5. 當我使用PHP連接到Active Directory時,是否需要ldap.conf?
- 6. 使用HTTPS時,是否需要在表單提交時加密請求參數?
- 7. 需要調用每一個Ajax請求
- 8. Docusign:我是否需要爲每個簽名請求調用「登錄」?
- 9. 使用BinaryObject時,我是否需要每個字段的索引?
- 10. 每個php是否需要單獨的請求?
- 11. 我是否需要爲編譯/鏈接提供選項(-arch i386)?
- 12. 我是否需要爲每個請求創建一個新的Struts Action類?
- 13. 連接失敗時是否需要mysql_close?
- 14. koa是否提供取消請求?
- 15. 使用VBA連接到Active Directory時,是否需要使用ADO?
- 16. 使用「使用」語句時是否需要關閉連接
- 17. 我需要使用連接
- 18. 每個請求與ADO.net的連接,是或否?
- 19. Android是否爲每個http請求創建連接?
- 20. Rspec,Rails,我是否需要獲得或發佈每個測試的請求
- 21. 我們是否需要針對每個POST請求進行CSRF驗證?
- 22. 我是否需要爲每個App在App Store上發佈請求證書?
- 23. mongodb是否需要連接每個操作
- 24. SQL Server CE是否需要/提供「UpdateOnSubmit()」?
- 25. 是否需要爲phpmailer提供strip_tags?
- 26. 每個請求都需要執行SetAuthCookie
- 27. 對於每個客戶端連接,我是否需要一個SocketAsyncEventArgs?
- 28. C#Oracle數據提供者(Oracle DataAccess.Dll)連接請求超時
- 29. 我是否需要使用關鍵字關閉SQL Server連接?
- 30. 是否需要手動請求緩衝?