On Feb 28, 2014, at 9:08 AM, xavi <xavi.caba...@gmail.com> wrote:
> (monger.collection/find "products" { :price_in_subunits { "gt" 1200 "lte" 
> 4000 } })

And you could use $gt, $lte directly if you require/refer Monger's operators 
namespace:

(monger.multi.collection/find db :products {:price_in_subunits {$gt 1200 $lte 
4000}})

Note that Monger seems to accept keywords for collection names, even tho' they 
are type-hinted as ^String, because it calls `name` on collection before 
passing it to MongoDB's driver (so I'm not sure why the ^String hint is even 
there?).

> (somnium.congomongo/fetch :products :where { :price_in_subunits { :$gt 1200 
> :$lte 4000 } })

Michael pointed out to me that :$gt is not sanctioned by Clojure's definition 
of keywords (even tho' it currently "works").

> db.products.find( { price_in_subunits: { $gt: 1200 $lte: 4000 } )

Yes, the fetch vs find aspect of CongoMongo has always bothered me too and I 
don't understand the various deviations from the MongoDB API / shell syntax. 
Some are subtle and confusing (IMO), but it's what I'm used to now... :)

> Good to know that the DSL in Monger is completely optional.

I like the DSL:

            (with-collection coll
              (find {:_id id})
              (limit 1)
              (options {:slaveok slave-ok?})
              (keywordize-fields true)))

although we have to jump through some hoops with coll to support multiple 
databases (dropping down to the Java API to get a Collection object from a 
specific DB object).

Sean Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)



Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to