forked from sivajag/mql
-
Notifications
You must be signed in to change notification settings - Fork 1
rberger/mql
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Inspired by http://github.com/MrHus/rql # What is mql mql is clojure library to query map data structures ## Usage Given a map (def m {:cid { :visits { :id-1 { :last-ts "1284166000040" :first-ts "1274166000000" :duration "40"} :id-2 { :last-ts "1274166000040" :first-ts "1274166000000" :duration "40"} :id-3 { :last-ts "1264166000040" :first-ts "1274166000000" :duration "40"}} :promo{ :id-1 {:promo "p2"} :id-2 {:promo "p1"}} :purchase { :id-1 {:order-id "order-id-1" :total-dollars "970.00" :purchase? "true", :merchant-total-dollars "1000.00"} :id-3 {:order-id "order-id-2" :total-dollars "1000.00" :purchase? "" :merchant-total-dollars "1000.00"}}}}) ## Select: simple select (select [:cid :promo] m) will return {:id-1 {:promo "p2"} :id-2 {:promo "p1"}} ## Select: with filtering (select [:cid :purchase] (where [* :total-dollars] :gt 980) m) will return {:id-1 {:order-id "order-id-1" :total-dollars "970.00" :purchase? "true", :merchant-total-dollars "1000.00"}} You can use :gt, :lt, :ge, :le and :eq as logical operator in where clause. In where clause for key-seq you can use * if a key is dynamic. The last key in where clause key-seq should not be *. ## Limitations: - There could be only one * in Where Clause - Select clause cannot have * now ## License Copyright (C) 2010 Siva Jagadeesan Distributed under the Eclipse Public License, the same as Clojure.
About
Clojure library for querying map data structures
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published