Tienes que dividir la interfaz de tu repositorio en dos.
El primero:los métodos que contienen "personalizados" que implementa manualmente serían:
public interface TopRepositoryCustom {
long getPublishedTopoCount();
}
Segundo para métodos generados:
public interface TopRepository extends MongoRepository<Topo, String>, TopRepositoryCustom {
@Query("{'name':?0}")
Topo findByName(String name);
}
Luego, solo necesita implementar el primer repositorio y recordar seguir la convención de nomenclatura adecuada. Vea más en:spring-data mongodb implementación personalizada PropertyReferenceException y Spring Data MongoDB Referencia de implementaciones personalizadas