Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __and__(self, other):
return Filter(self.coll, self.q & other.q)
def _get_filter_criteria(self, *args, **kwargs):
"""
return mongo query from filter specs
this uses a Filter to produce the query from the kwargs.
:param args: a Q object or logical combination of Q objects
(optional)
:param kwargs: all AND filter criteria
"""
if len(args) > 0:
q = args[0]
if isinstance(q, MongoQ):
filter_criteria = Filter(self.collection, q).query
elif isinstance(q, Filter):
filter_criteria = Filter(self.collection, q.q).query
else:
filter_criteria = Filter(self.collection, **kwargs).query
return filter_criteria
return mongo query from filter specs
this uses a Filter to produce the query from the kwargs.
:param args: a Q object or logical combination of Q objects
(optional)
:param kwargs: all AND filter criteria
"""
if len(args) > 0:
q = args[0]
if isinstance(q, MongoQ):
filter_criteria = Filter(self.collection, q).query
elif isinstance(q, Filter):
filter_criteria = Filter(self.collection, q.q).query
else:
filter_criteria = Filter(self.collection, **kwargs).query
return filter_criteria
"""
collection = self.collection(name)
if lazy:
from ..mdataframe import MDataFrame
filter = filter or kwargs
df = MDataFrame(collection, columns=columns).query(**filter)
if is_series:
df = df[0]
else:
# TODO ensure the same processing is applied in MDataFrame
# TODO this method should always use a MDataFrame disregarding lazy
filter = filter or kwargs
if filter:
from .query import Filter
query = Filter(collection, **filter).query
cursor = collection.find(filter=query, projection=columns)
else:
cursor = collection.find(projection=columns)
# restore dataframe
df = cursor_to_dataframe(cursor)
if '_id' in df.columns:
del df['_id']
meta = self.metadata(name)
if hasattr(meta, 'kind_meta'):
df = convert_dtypes(df, meta.kind_meta.get('dtypes', {}))
# -- restore columns
meta_columns = dict(meta.kind_meta.get('columns'))
if meta_columns:
# apply projection, if any
if columns:
# get only projected columns
def __iter__(self):
""" for each group returns the key and a Filter object"""
groups = self._count()
for group in groups:
keys = group.get('_id')
data = Filter(self.collection, **keys)
yield keys, data
def _get_filter_criteria(self, *args, **kwargs):
"""
return mongo query from filter specs
this uses a Filter to produce the query from the kwargs.
:param args: a Q object or logical combination of Q objects
(optional)
:param kwargs: all AND filter criteria
"""
if len(args) > 0:
q = args[0]
if isinstance(q, MongoQ):
filter_criteria = Filter(self.collection, q).query
elif isinstance(q, Filter):
filter_criteria = Filter(self.collection, q.q).query
else:
filter_criteria = Filter(self.collection, **kwargs).query
return filter_criteria