def query(self, q_kw=None, fields=None, sort_by=None, use_iterators=True, *args, **kwargs):
""" Find a set of document with condition
Sometimes because of memory, cause `MemoryError` exception
"""
if not isinstance(sort_by, (tuple, types.NoneType)):
raise TypeError('meth: query, `sort_by` keyword type error')
if not isinstance(fields, dict):
raise TypeError('meth: query, `fields` keyword type error')
self.__connect()
skip = kwargs.pop('skip', 0)
limit = kwargs.pop('limit', 0) # 0 hint to get overall document
args = (q_kw, ) + args
kwargs['projection'] = fields
sort_by = sort_by or [('_id', pymongo.DESCENDING)]
cursor = self.__collection.find(*args, **kwargs).sort(sort_by)
if use_iterators:
return cursor.skip(skip).limit(limit)
return [doc for doc in cursor]
评论列表
文章目录