如何使用Spring Data删除MongoDB中的记录

时间:2016-06-06 17:25:33

标签: java spring mongodb spring-data-mongodb

我想在Spring中删除基于Id的记录。 但在数据库中,id值是object EX: -

id: Object(34562341112313)

如何在Spring中删除此记录?

3 个答案:

答案 0 :(得分:1)

你喜欢这样:

public void deleteRecord() {
    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
    Query searchQuery = new Query(Criteria.where("id").is(34562341112313));
    mongoOperation.remove(searchQuery, Your_entity_class.class);
    logger.info("Delete success");
}

这是我的现实例子:

/**
 * Delete by condition(s).
 */
public void deleteJob() {
    MongoOperations mongoOperation = (MongoOperations) ctx.getBean("mongoTemplate");
    Query searchQuery = new Query(Criteria.where("company").is("DCV"));
    mongoOperation.remove(searchQuery, Job.class);
    logger.info("Đã xóa các công việc đăng bởi DCV.");
}

来源:https://github.com/SmartJobVN/MongoDB_SpringDataMongo/blob/master/src/main/java/vn/smartJob/jobs/MongoSpringJavaConfigApplication.java#L132

参考:http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/

答案 1 :(得分:0)

你应该删除它:

@Repository
public class AppDaoClass{
    @Autowired
    MongoTemplate mongoTemplate;
    @Override
    public void deleteSomething(String somethingId) {
        mongoTemplate.remove(Query.query(Criteria.where("somethingId").is(somethingId)), Ticket.class);
    }
}

第一个“somethingId”是你在模型中给出的名字,第二个是用于你在方法中给出的Parametar

您的域名模型:

@Document
public class Model {

    @Id
    private String somethingId;
    private String someName;
    private String someOtherName;
}

请务必为您的班级 @Document @Repository 添加适当的注释。并在您的ID字段中添加 @Id 注释。

希望这会有所帮助。

答案 2 :(得分:0)

这是使用MongoTemplate删除Spring数据mongoDB中的记录的方法

WriteResult writeResult=mongoTemplate.remove(query,"collection_name");

OR

 WriteResult writeResult=mongoTemplate.remove(query,EntityClassName.class);

您还可以使用存储库模式

@Document(collection = "user")
public class User {

@Id
private String id;
private String username;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}
}

@Repository
public interface UserRepository extend MongoRepository<User, String>{
     public void delete(String id);
     public void delete(User user);
     public void deleteByUsername(String username);
}

您可以在任何地方使用这些方法删除记录,也可以编写自定义方法