2012-05-25 6 views
2

Supposons que j'ai une collection dans mongodb, où tous ses documents prennent la structure suivante.Récupérer des documents de la collection Mongo en utilisant Karras

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

Soit suppose que je veux trouver toutes les collections où "ID utilisateur" = 2. Je peux le faire facilement Via la coquille mongo en utilisant la fonction suivante.

db.mycol.find({"meta-data.user-id" : 2}) 

J'ai besoin de récupérer ces documents via clojure. Par conséquent, j'ai l'ensemble des fonctions suivantes.

Voici mon code jusqu'à présent.

(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 est l'intention de la fonction que j'utiliser pour chercher des documents. La fonction suivante fait le travail.

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

Et voici comment vous pouvez résoudre cela avec Karras

Répondre

1

La réponse:

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

Essayez ceci:

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

Cela ne fonctionnait pas ... – azeemigi

Questions connexes