Queryset

class yadm.queryset.QuerySet(db, document_class, *, cache=None, criteria=None, projection=None, sort=None, slice=None, read_preference=None)

Query builder.

Parameters:
  • cache
  • criteria (dict) –
  • projection (dict) –
  • sort (list) –
  • slice (slice) –
  • read_preference (int) –
bulk()

Return map {id: object}.

Returns:dict
cache

Queryset cache object.

copy(*, cache=None, criteria=None, projection=None, sort=None, slice=None, read_preference=None)

Copy queryset with new parameters.

Only keywords arguments is alowed. Parameters simply replaced with given arguments.

Parameters:
  • cache
  • criteria (dict) –
  • projection (dict) –
  • sort (list) –
  • slice (slice) –
  • read_preference (int) –
Returns:

new yadm.queryset.QuerySet object

count()

Count documents in queryset.

Returns:int
distinct(field)

Distinct query.

Parameters:field (str) – field for distinct
Returns:list with result data
fields(*fields)

Get only setted fields.

Update projection with fields.

Parameters:fields (str) –
Returns:new yadm.queryset.QuerySet
qs('field', 'field2')
fields_all()

Clear projection.

find(criteria=None, projection=None)

Return queryset copy with new criteria and projection.

Parameters:
  • criteria (dict) – update queryset’s criteria
  • projection (dict) – update queryset’s projection
Returns:

new yadm.queryset.QuerySet

qs({'field': {'$gt': 3}}, {'field': True})
find_and_modify(update=None, *, upsert=False, full_response=False, new=False, **kwargs)

Execute $findAndModify query.

Parameters:
  • update (dict) – see second argument to update()
  • upsert (bool) – insert if object doesn’t exist (default False)
  • full_response (bool) – return the entire response object from the server (default False)
  • new – return updated rather than original object (default False)
  • kwargs – any other options the findAndModify command supports can be passed here
Returns:

yadm.documents.Document or None

find_one(criteria=None, projection=None, *, exc=None)

Find and return only one document.

Parameters:
  • criteria (dict) – update queryset’s criteria
  • projection (dict) – update queryset’s projection
  • exc (Exception) – raise given exception if not found
Returns:

yadm.documents.Document or None

qs({'field': {'$gt': 3}}, {'field': True})
join(*field_names)

Create yadm.Join object, join field_names and return it.

Parameters:fiels_names (str) – fields for join
Returns:new yadm.join.Join
Next algorithm for join:
  1. Get all documents from queryset;
  2. Aggegate all ids from requested fields;
  3. Make $in queries for get joined documents;
  4. Bind joined documents to objects from first queryset;

Join object is instance of abc.Sequence.

read_preference(read_preference)

Setup readPreference.

Return new QuerySet instance.

remove(*, multi=True)

Remove documents in queryset.

Parameters:multi (bool) – if False, remove only first finded document (default True)
sort(*sort)

Return queryset with sorting.

Parameters:sort (tuples) – tuples with two items: (‘field_name’, sort_order_as_int).
qs.sort(('field_1', 1), ('field_2', -1))
update(update, *, multi=True, upsert=False)

Update documents in queryset.

Parameters:
  • update (dict) – update query
  • multi (bool) – update all matched documents (default True)
  • upsert (bool) – insert if not found (default False)
Returns:

update result

with_id(_id)

Find document with id.

This method is deprecated. Use find_one.

Parameters:_id – id of searching document
Returns:yadm.documents.Document or None