]> git.jsancho.org Git - bongodb.git/blobdiff - src/bongodb.scm
Basic searching support
[bongodb.git] / src / bongodb.scm
index 3cffa48d5ce6f7280958a00d1abf04ece8acc50b..e4df14bde9e1699503e91b4b9d6b9883446ba0b1 100644 (file)
   "Query the collection and return the documents that match with filter"
   (let ((table (get-table col)))
     (vhash-fold
   "Query the collection and return the documents that match with filter"
   (let ((table (get-table col)))
     (vhash-fold
-     (lambda (key value result) (cons (vhash->alist value) result))
+     (lambda (key document result)
+       (cond ((match-document? document filter)
+             (cons (vhash->alist document) result))
+            (else
+             result)))
      '()
      table)))
 
      '()
      table)))
 
+(define (match-document? document filter)
+  "Try to match the given document with a list of conditions"
+  (cond ((null? filter)
+        #t)
+       (else
+        (and
+         (equal? (vhash-assoc (caar filter) document) (car filter))
+         (match-document? document (cdr filter))))))
+
 
 ;;; Tools
 
 
 ;;; Tools