MongoRepositoryを使用してMongoDBでSpringデータを使用しています。質問注釈を使用してMongoRepositoryのアイテムを削除する方法は?
クエリアノテーションを使用してフィルタで削除できるかどうか疑問に思っていました。私はここでGoogleを探していて、私はドキュメントを見つけることができません。
MongoRepositoryを使用してMongoDBでSpringデータを使用しています。質問注釈を使用してMongoRepositoryのアイテムを削除する方法は?
クエリアノテーションを使用してフィルタで削除できるかどうか疑問に思っていました。私はここでGoogleを探していて、私はドキュメントを見つけることができません。
@Query(value="{id : $0}", delete = true)
public Person deleteBy
残念ながら、スプリングデータはクエリに基づいてドキュメントを削除する方法を提供しません。また、@Query
アノテーションは検索ドキュメントのみに使用されます。
あなたが望むものに基づいて文書を削除するcustom repositoryを実装することができます。
おそらく、リポジトリの削除クエリを使用できます。ここでdocumentationからの例です:戻り値の型のリストを使用して
public interface PersonRepository extends MongoRepository<Person, String> {
List <Person> deleteByLastname(String lastname);
Long deletePersonByLastname(String lastname);
}
は、実際にそれらを削除する前に、一致するすべての文書を検索して返します。数値の戻り値の型は、削除されたドキュメントの総数を返す一致するドキュメントを直接削除します。
これは現時点では最新のようですので、これがトップの答えになるはずです。 –
リポジトリ:いくつかのクラスで
@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つのmongoのクエリになります。 –
ありがとう!、私のために働いた。 (欠落していた "delete = true") – andreyro