Add $regex and $options operator macros
This commit is contained in:
parent
ca67d9f4cb
commit
acdaffba99
3 changed files with 21 additions and 3 deletions
|
|
@ -1,6 +1,8 @@
|
|||
## Changes between 1.0.0-beta7 and 1.0.0-beta8
|
||||
|
||||
No changes yet.
|
||||
### More Operators
|
||||
|
||||
Two new operator macros: `$regex`, `$options`.
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,9 @@
|
|||
(defmacro ^{:private true} defoperator
|
||||
[operator]
|
||||
(let [op# (str operator)
|
||||
op-sym# (symbol op#)]
|
||||
`(def ~op-sym# ~op#)))
|
||||
op-sym# (symbol op#)
|
||||
meta {:const true}]
|
||||
`(def ^{:const true} ~op-sym# ~op#)))
|
||||
|
||||
;;
|
||||
;; QUERY OPERATORS
|
||||
|
|
@ -66,6 +67,8 @@
|
|||
;; (monger.collection/find "comments" { $elemMatch { :text "Nice!" :rating { $gte 1 } } })
|
||||
(defoperator $elemMatch)
|
||||
|
||||
(defoperator $regex)
|
||||
(defoperator $options)
|
||||
|
||||
;;
|
||||
;; LOGIC OPERATORS
|
||||
|
|
|
|||
|
|
@ -97,3 +97,16 @@
|
|||
1 { :comments { $elemMatch { :text "Nice!" :rating { $gte 1 } } } }
|
||||
2 { "comments.rating" 1 }
|
||||
1 { "comments.rating" { $gt 3 } })))
|
||||
|
||||
(deftest ^{:focus true} find-with-regex-operator
|
||||
(let [collection "libraries"]
|
||||
(mgcol/insert-batch collection [{ :language "Ruby", :name "Mongoid" :users 1}
|
||||
{ :language "Clojure", :name "Langohr" :users 5 }
|
||||
{ :language "Clojure", :name "Incanter" :users 15 }
|
||||
{ :language "Scala", :name "Akka" :users 150}])
|
||||
(are [query results] (is (= results (.count (mgcol/find collection query))))
|
||||
{:language {$regex "Clo.*" }} 2
|
||||
{:language {$regex "clo.*" $options "i"}} 2
|
||||
{:name {$regex "aK.*" $options "i"}} 1
|
||||
{:language {$regex ".*by" }} 1
|
||||
{:language {$regex ".*ala.*" }} 1)))
|
||||
|
|
|
|||
Loading…
Reference in a new issue