使用Karras从Mongo Collection中获取文档

时间:2012-05-25 14:15:08

标签: mongodb clojure

让我们假设我在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

解决此问题的方法

2 个答案:

答案 0 :(得分:1)

试试这个:

(fetch (job-collection) {:meta-data {:user-id id}})

答案 1 :(得分:1)

答案:

(fetch (job-collection) {"meta-data.user-id" id})