rcquerybuilder package

Submodules

rcquerybuilder.builder module

redCrown MongoDB QueryBuilder

This module contains the builder and query classes for usage with pymongo.

Example

Basic Usage (select/find queries):

import pymongo

mongo = pymongo.MongoClient()
db = mongo['db_foobar']

qb = Builder(collection=db['collection_foobar'])
qb.field('name').is_not_in(['Matthew', 'Boris']) \
  .field('age').gte(21) \
  .field('attributes').is_type('object')

# The query object forwards it's query to the collection
# on on the ``execute()`` call.
query = qb.build()

# cursor is a ``pymongo.cursor.Cursor`` instance.
cursor = qb.build().execute()

# Which is equivalent to:
collection.find({'name': {'$nin': ['Matthew', 'Boris']},
                 'age': {'$gte': 21},
                 'attributes': {'$type': 3}})

Update Queries:

qb.update(multi=True) \
  .field('foo').equals('bar').set('buzz') \
  .field('totals').gt(10) \
  .field('counter').inc(1) \
  .field('some_list').push({'name': 'testing', 'value': 'cool'})

update_result = qb.build().execute()

# Which is equivalent to:
collection.update_many(
    {'foo': 'bar', 'totals': {'$gt': 10}},
    {
        '$set': {'foo': 'buzz'},
        '$inc': {'counter': 1},
        '$push': {'some_list': {'name': 'testing', 'value': 'cool'}}
    }
)
class rcquerybuilder.builder.Builder(collection)

Bases: object

build(**kwargs)
count()
static expr()
field(field)
find()
find_and_remove()
find_and_update()
get_query_list()
insert()
select(*field_names)
select_elem_match(field_name, expression)
select_meta(metadata_keyword)
select_slice(field_name, count_or_skip, limit=None)
set(value, atomic=True)
update(multi=False)
upsert(upsert=True)
class rcquerybuilder.builder.Expr

Bases: object

add_and(expression)
add_many_to_set(values)
add_nor(expression)
add_or(expression)
add_to_set(value_or_expression)
all(values)
bit_and(value)
bit_or(value)
bits_all_clear(value)
bits_all_set(value)
case_sensitive(case_sensitive)
comment(comment)
current_date(type='date')
each(values)
elem_match(expression)
equals(value)
exists(value=True)
field(field)
get_query()
gt(value)
gte(value)
inc(value)
is_in(values)
is_not(expression)
is_not_in(values)
is_type(type)
lt(value)
lte(value)
max(value)
min(value)
mul(value)
ne(value)
not_equals(value)
not_null()
null()
operator(operator, value)
pop_first()
pop_last()
position(position)
pull(value_or_expression)
pull_all(values)
push(value_or_expression)
push_all(values)
range(start, end)
regex(pattern)
rename(name)
search(search, language=None, case_sensitive=False, diacritic_sensitive=False)
set(value, atomic=True)
set_on_insert(value)
size(size)
slice(size)
sort(*sort_criteria)
text(search, language=None, case_sensitive=False, diacritic_sensitive=False)
unset_field()
where(javascript)
class rcquerybuilder.builder.Query(collection, query=(), options=())

Bases: object

execute()
class rcquerybuilder.builder.QueryTypes

Bases: object

TYPE_AGGREGATE = 'aggregate'
TYPE_COUNT = 'count'
TYPE_DISTINCT = 'distinct'
TYPE_FIND = 'find'
TYPE_FIND_AND_REMOVE = 'find_one_and_delete'
TYPE_FIND_AND_UPDATE = 'find_and_modify'
TYPE_GROUP = 'group'
TYPE_INSERT = 'insert'
TYPE_INSERT_MANY = 'insert_many'
TYPE_INSERT_ONE = 'insert'
TYPE_MAP_REDUCE = 'map_reduce'
TYPE_REMOVE = 'remove'
TYPE_UPDATE = 'update_one'
TYPE_UPDATE_MANY = 'update_many'
rcquerybuilder.builder.expr()

Get a new Expr instance.

Returns:The Expr instance.
Return type:Expr

rcquerybuilder.pipeline module

Pipeline module.

This module provides a fluent api around mongo’s aggregation pipeline.

class rcquerybuilder.pipeline.GroupStage

Bases: rcquerybuilder.pipeline.PipelineStage

add_to_set(expression)
avg(expression)
build()
first(expression)
group_all()
id(*args, **kwargs)
key = '$group'
last(expression)
max(expression)
min(expression)
push(expression)
sum(expression)
class rcquerybuilder.pipeline.MatchStage

Bases: rcquerybuilder.pipeline.PipelineStage

key = '$match'
class rcquerybuilder.pipeline.PipelineExpr

Bases: rcquerybuilder.builder.Expr

abs(expression)
add(expression)
array_elem_at(array_or_field, index)
ceil(expression)
concat(*expressions)
concat_arrays(*arrays)
cond(if_cond, then_cond, else_cond)
date_to_string(date, date_format='%Y-%m-%d %H:%M:%S')
day_of_month(expression)
day_of_year(expression)
divide(*expression)
classmethod expr()
filter(input, name, cond)
floor(expression)
hour(expression)
if_null(expression, replacement)
is_array(expression)
ln(expression)
log(expression)
millisecond(expression)
minute(expression)
mod(expression)
month(expression)
multiply(*expression)
operator(operator, value_or_expression)
second(expression)
set(value, atomic=None)
sqrt(expression)
strcasecmp(field1, field2)
substr(string, start, length)
subtract(expression)
to_lower(expression)
to_upper(expression)
week(expression)
year(expression)
class rcquerybuilder.pipeline.PipelineStage

Bases: rcquerybuilder.pipeline.PipelineExpr

build()
key = None
class rcquerybuilder.pipeline.ProjectStage

Bases: rcquerybuilder.pipeline.PipelineStage

id(show=True)
key = '$project'
class rcquerybuilder.pipeline.SortStage

Bases: object

build()
by(*args)
key = '$sort'
sort(field, direction=1)
rcquerybuilder.pipeline.expr()

Creates a new PipelineExpr. Useful for chaining.

Returns:The created PipelineExpr.
Return type:PipelineExpr

Module contents

class rcquerybuilder.Builder(collection)

Bases: object

build(**kwargs)
count()
static expr()
field(field)
find()
find_and_remove()
find_and_update()
get_query_list()
insert()
select(*field_names)
select_elem_match(field_name, expression)
select_meta(metadata_keyword)
select_slice(field_name, count_or_skip, limit=None)
set(value, atomic=True)
update(multi=False)
upsert(upsert=True)
class rcquerybuilder.Expr

Bases: object

add_and(expression)
add_many_to_set(values)
add_nor(expression)
add_or(expression)
add_to_set(value_or_expression)
all(values)
bit_and(value)
bit_or(value)
bits_all_clear(value)
bits_all_set(value)
case_sensitive(case_sensitive)
comment(comment)
current_date(type='date')
each(values)
elem_match(expression)
equals(value)
exists(value=True)
field(field)
get_query()
gt(value)
gte(value)
inc(value)
is_in(values)
is_not(expression)
is_not_in(values)
is_type(type)
lt(value)
lte(value)
max(value)
min(value)
mul(value)
ne(value)
not_equals(value)
not_null()
null()
operator(operator, value)
pop_first()
pop_last()
position(position)
pull(value_or_expression)
pull_all(values)
push(value_or_expression)
push_all(values)
range(start, end)
regex(pattern)
rename(name)
search(search, language=None, case_sensitive=False, diacritic_sensitive=False)
set(value, atomic=True)
set_on_insert(value)
size(size)
slice(size)
sort(*sort_criteria)
text(search, language=None, case_sensitive=False, diacritic_sensitive=False)
unset_field()
where(javascript)
class rcquerybuilder.PipelineExpr

Bases: rcquerybuilder.builder.Expr

abs(expression)
add(expression)
array_elem_at(array_or_field, index)
ceil(expression)
concat(*expressions)
concat_arrays(*arrays)
cond(if_cond, then_cond, else_cond)
date_to_string(date, date_format='%Y-%m-%d %H:%M:%S')
day_of_month(expression)
day_of_year(expression)
divide(*expression)
classmethod expr()
filter(input, name, cond)
floor(expression)
hour(expression)
if_null(expression, replacement)
is_array(expression)
ln(expression)
log(expression)
millisecond(expression)
minute(expression)
mod(expression)
month(expression)
multiply(*expression)
operator(operator, value_or_expression)
second(expression)
set(value, atomic=None)
sqrt(expression)
strcasecmp(field1, field2)
substr(string, start, length)
subtract(expression)
to_lower(expression)
to_upper(expression)
week(expression)
year(expression)
class rcquerybuilder.PipelineStage

Bases: rcquerybuilder.pipeline.PipelineExpr

build()
key = None