class AbstractMongoDao extends AbstractDao<M,P,K,I> {

    protected Iterable<M> iterateByQuery(Bson query, Bson sort) {
        FindIterable<Document> iterable = getCollection().find(query);
        if (sort != null) {
            iterable = iterable.sort(sort);
        }
        return iterable.map(doc -> getModelMapper().toObject(doc));
    }

    public  AbstractMongoDao(Class<M> modelClass, Class<P> partialClass, MongoCollection<Document> collection);
    public  AbstractMongoDao(Class<M> modelClass, Class<P> partialClass, MongoCollection<Document> collection, ObjectMapper objectMapper, ObjectMapper extendedJsonMapper);
    public  AbstractMongoDao(Class<M> modelClass, Class<P> partialClass, MongoCollection<Document> collection,
                            DocumentMapper<M> modelMapper, DocumentMapper<P> partialMapper);

}