2013-07-05 17 views

答えて

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

ありがとう!、私のために働いた。 (欠落していた "delete = true") – andreyro

3

残念ながら、スプリングデータはクエリに基づいてドキュメントを削除する方法を提供しません。また、@Queryアノテーションは検索ドキュメントのみに使用されます。

あなたが望むものに基づいて文書を削除するcustom repositoryを実装することができます。

+0

- 私を見感謝を取ります! – paul

+1

@Queryが削除のために機能するようになりました。 Marcelo Pasutが答えで述べたように@Query(value = "{id:?0}"、delete = true)を追加します。 – andreyro

7

おそらく、リポジトリの削除クエリを使用できます。ここでdocumentationからの例です:戻り値の型のリストを使用して

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

    Long deletePersonByLastname(String lastname);   
} 

は、実際にそれらを削除する前に、一致するすべての文書を検索して返します。数値の戻り値の型は、削除されたドキュメントの総数を返す一致するドキュメントを直接削除します。

+0

これは現時点では最新のようですので、これがトップの答えになるはずです。 –

0

リポジトリ:いくつかのクラスで

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

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

コード:

@Autowired 
private SomeRepository pRepo; 

public void delete(String id) { 

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

これは、単一の削除(基準)の代わりに2つのmongoのクエリになります。 –

関連する問題