2

假设我在 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解决这个问题的方法

4

2 回答 2

1

The Answer:

(fetch (job-collection) {"meta-data.user-id" id})
于 2012-06-24T17:06:17.270 回答
1

尝试这个:

(fetch (job-collection) {:meta-data {:user-id id}})
于 2012-05-25T15:09:03.060 回答