Spring Data MongoDB: Удалить документ
В данных Spring для MongoDB вы можете использоватьremove()
иfindAndRemove()
для удаления документов из MongoDB.
-
удалить () - удалить один или несколько документов.
-
findAndRemove () - удаляет отдельный документ и возвращает удаленный документ.
Common Mistake
Не используйтеfindAndRemove()
для выполнения пакетного удаления (удаления нескольких документов), будет удален только первый документ, соответствующий запросу. Обратитесь к query4 ниже:
1. Удалить пример документа
Смотрите полный пример, чтобы показать использование remove () и findAndRemove ().
package com.example.core; import java.util.ArrayList; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import com.example.config.SpringMongoConfig; import com.example.model.User; /** * Delete example * * @author example * */ public class DeleteApp { public static void main(String[] args) { ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class); MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate"); // insert 6 users for testing Listusers = new ArrayList (); User user1 = new User("1001", "ant", 10); User user2 = new User("1002", "bird", 20); User user3 = new User("1003", "cat", 30); User user4 = new User("1004", "dog", 40); User user5 = new User("1005", "elephant", 50); User user6 = new User("1006", "frog", 60); users.add(user1); users.add(user2); users.add(user3); users.add(user4); users.add(user5); users.add(user6); mongoOperation.insert(users, User.class); Query query1 = new Query(); query1.addCriteria(Criteria.where("name").exists(true) .orOperator( Criteria.where("name").is("frog"), Criteria.where("name").is("dog") )); mongoOperation.remove(query1, User.class); Query query2 = new Query(); query2.addCriteria(Criteria.where("name").is("bird")); User userTest2 = mongoOperation.findOne(query2, User.class); mongoOperation.remove(userTest2); // The first document that matches the query is returned and also // removed from the collection in the database. Query query3 = new Query(); query3.addCriteria(Criteria.where("name").is("ant")); User userTest3 = mongoOperation.findAndRemove(query3, User.class); System.out.println("Deleted document : " + userTest3); // either cat or elephant is deleted only, // common mistake, don't use for batch delete. /* Query query4 = new Query(); query4.addCriteria(Criteria.where("name") .exists(true) .orOperator( Criteria.where("name").is("cat"), Criteria.where("name").is("elephant") ) ); mongoOperation.findAndRemove(query4, User.class); System.out.println("Deleted document : " + userTest4); */ System.out.println("\nAll users : "); List allUsers = mongoOperation.findAll(User.class); for (User user : allUsers) { System.out.println(user); } mongoOperation.dropCollection(User.class); } }
Выход
Deleted document : User [id=5162e0153004c3cb0a907370, ic=1001, name=ant, age=10] All users : User [id=5162e0153004c3cb0a907372, ic=1003, name=cat, age=30] User [id=5162e0153004c3cb0a907374, ic=1005, name=elephant, age=50]
Скачать исходный код
Скачать -SpringMongoDB-Delete-Example.zip (24 КБ)