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

    protected boolean exists(Document query, K excludeId) {
        FindIterable<Document> find = getCollection().find(query).projection(new Document("_id", 1)).limit(2);
        for (Document doc : find) {
            if (!doc.get("_id").equals(excludeId)) {
                return true;
            }
        }
        return false;
    }

    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);

}