X-Git-Url: https://git.jsancho.org/?p=bongodb.git;a=blobdiff_plain;f=src%2Fbongodb.scm;fp=src%2Fbongodb.scm;h=e4df14bde9e1699503e91b4b9d6b9883446ba0b1;hp=3cffa48d5ce6f7280958a00d1abf04ece8acc50b;hb=0fe9f925e00b6899f3b685082ed9b3374933c527;hpb=9799d66d7e1538bbe2a672946ce80b49dc55ca84 diff --git a/src/bongodb.scm b/src/bongodb.scm index 3cffa48..e4df14b 100644 --- a/src/bongodb.scm +++ b/src/bongodb.scm @@ -79,10 +79,23 @@ "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))) +(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