让我们假设我在mongodb中有一个集合,其所有文档都采用以下结构。
{
"_id":5,
"key-name":"test",
"meta-data":{
"user-id":2,
"status":2
}
}
假设我想找到“user-id”= 2 的所有集合。我可以使用以下功能通过mongo shell轻松完成此操作。
db.mycol.find({"meta-data.user-id" : 2})
我需要通过clojure检索这些文档。因此,我有以下功能集。
以下是我的代码到目前为止。
(ns demo.repository
(:use karras.core)
(:use karras.sugar)
(:use karras.collection))
(def mongo-connection (atom nil))
(def mandate-db (atom nil))
(defn mongo-connect []
(if (nil? @mongo-connection)
(do
(swap! mongo-connection (constantly (connect "192.168.0.6" 27017)))
(swap! mandate-db (constantly (mongo-db @mongo-connection "mydb"))))))
(defn mongo-close []
(if-not (nil? @mongo-connect)
(.close @mongo-connect)))
(defn- job-collection [] (collection @mandate-db "mycol"))
(defn retrieve-doc [id]
(fetch (job-collection) {"meta-data.user-id" id}))
retrieve-doc 是我打算用来获取文档的函数。以下功能完成了这项工作。
(fetch (job-collection) {"meta-data.user-id" id})
这就是您使用Karras
解决此问题的方法答案 0 :(得分:1)
试试这个:
(fetch (job-collection) {:meta-data {:user-id id}})
答案 1 :(得分:1)
答案:
(fetch (job-collection) {"meta-data.user-id" id})