+(define (match-document? document filter)
+ "Try to match the given document with a list of conditions"
+ (cond ((null? filter)
+ #t)
+ (else
+ (and
+ ((car filter) document)
+ (match-document? document (cdr filter))))))
+
+
+;;; Queries
+
+(define ($eq field value)
+ (lambda (document)
+ (let ((stored (vhash-assoc field document)))
+ (and stored
+ (equal? (cdr stored) value)))))
+