Devi dividere l'interfaccia del tuo repository in due.
Il primo:i metodi "Personalizzati" che implementi manualmente sarebbero:
public interface TopRepositoryCustom {
long getPublishedTopoCount();
}
Il secondo per i metodi generati:
public interface TopRepository extends MongoRepository<Topo, String>, TopRepositoryCustom {
@Query("{'name':?0}")
Topo findByName(String name);
}
Quindi devi solo implementare il primo repository e ricordarti di seguire la convenzione di denominazione corretta. Ulteriori informazioni su:implementazione personalizzata di spring-data mongodb PropertyReferenceException e Spring Data MongoDB Riferimento implementazioni personalizzate