Returns List(typeof=).

        Executes collection's find method based on keyword args
        maps results ( dict to list of entity instances).

        Set max_limit parameter to limit the amount of data send back through network

        Example::

            manager = EntityManager(Product)
            products = yield manager.find(age={'$gt': 17}, max_limit=100)

def find(self, **kwargs):
        """Returns List(typeof=).

        Executes collection's find method based on keyword args
        maps results ( dict to list of entity instances).

        Set max_limit parameter to limit the amount of data send back through network

        Example::

            manager = EntityManager(Product)
            products = yield manager.find(age={'$gt': 17}, max_limit=100)

         """
        max_limit = None
        if 'max_limit' in kwargs:
            max_limit = kwargs.pop('max_limit')
        cursor = self.__collection.find(kwargs)
        instances = []
        for doc in (yield cursor.to_list(max_limit)):
            instance = self.__entity()
            instance.map_dict(doc)
            instances.append(instance)
        return instances