2

私がmongodbにコレクションを持っていると仮定しましょう。ここで、そのすべてのドキュメントは次の構造を取ります。

{
    "_id":5,
    "key-name":"test",
    "meta-data":{
        "user-id":2,
        "status":2
    }
}

「user-id」=2であるすべてのコレクションを検索したいとします。次の関数を使用して、mongoシェルを介してこれを簡単に行うことができます。

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})

そして、これはあなたがカラスでこれを解決する方法です

4

2 に答える 2

1

答え:

(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 に答える