2013-07-05 7 views

risposta

6
@Query(value="{id : $0}", delete = true) 
public Person deleteBy 
+0

Grazie !, ha funzionato per me. (mancava "delete = true") – andreyro

3

Purtroppo i dati di primavera non forniscono alcun metodo per eliminare i documenti in base a una query. E l'annotazione @Query è solo per i documenti di ricerca.

Che cosa si potrebbe fare è implementare un custom repository che elimina i documenti in base a ciò che si desidera.

+0

i'll un'occhiata grazie! – paul

+1

@Query ora funziona per l'eliminazione. Aggiungi @Query (value = "{id:? 0}", delete = true) come Marcelo Pasut menzionato nella risposta. – andreyro

7

Forse è possibile utilizzare il repository eliminare le query. Ecco un esempio da documentation:

public interface PersonRepository extends MongoRepository<Person, String> { 
    List <Person> deleteByLastname(String lastname); 

    Long deletePersonByLastname(String lastname);   
} 

Utilizzando tipo di ritorno Lista recupererà e restituire tutti i documenti corrispondenti prima della loro eliminazione. Un tipo di ritorno numerico rimuove direttamente i documenti corrispondenti restituendo il numero totale di documenti rimossi.

+0

Questo sembra essere l'ultimo a partire da ora quindi penso che questo dovrebbe essere la risposta superiore. –

0

Repository:

@Component 
public interface SomeRepository extends MongoRepository<SomeObject, String> { 

    @Query("{ '_id' : ?0 }") 
    SomeObject findById(String _id); 
} 

Codice in qualche classe:

@Autowired 
private SomeRepository pRepo; 

public void delete(String id) { 

    pRepo.delete(pRepo.findById(id)); 
} 
+2

Questo si tradurrà in 2 domande mongo invece di un singolo di cancellazione (criteri) uno. –

Problemi correlati