MongoParserRB

Parse and evaluate MongoDB queries in Ruby. MongoParserRB is useful for checking if already loaded documents match a query, without the overhead of making requests to the database.

Parse a query:

q = MongoParserRB::Query.parse({:comment_count => 5})

Once a query has been parsed you can check if individual documents match a query:

q.matches_document?({:comment_count => 4}) => false
q.matches_document?({:comment_count => 5}) => true

You can use MongoDB's conditional operators, specify them as symbols:

q = MongoParserRB::Query.parse({:comment_count => {:$gt => 5, :$lt => 10}})
q.matches_document?({:comment_count => 11}) => false
q.matches_document?({:comment_count => 6}) => true

The following operators are currently supported: $and, $or, $in, $nin, $ne, $gt, $gte, $lt, $lte, $not.

Regexps are also supported:

q = MongoParserRB::Query.parse({:"email" => /gmail/})
q.matches_document?({:email => "[email protected]"}) => false
q.matches_document?({:email => "[email protected]"}) => true

MongoDB's dot field syntax can be used:

q = MongoParserRB::Query.parse({:"author.name" => "Ben"})
q.matches_document?({:author => {:name => "Ciaran"}}) => false
q.matches_document?({:author => {:name => "Ben"}}) => true

Installation

Add this line to your application's Gemfile:

gem 'mongo-parser-rb'

And then execute:

$ bundle

Or install it yourself as:

$ gem install mongo-parser-rb