在Spring data MongoDB中实现批量删除记录

2 篇文章 0 订阅
1 篇文章 0 订阅

在Spring data MongoDB中实现批量删除记录

业务需求:比如前台需要用复选框勾选多条记录进行删除,本人以MongoDB中自动生成的_id为例进行批量删除操作。

  • 建立数据库
  • 建立Collection,比如叫“exampleSentence”
    首先,对前台传来的参数进行处理,批量删除前台传入的参数形式应该是数组类型的json数据。比如:
    {
    "content": [
        "5912e7ae2d725d1d7c72b04a",
        "5912e7aa2d725d1d7c72b049"
    ]
}
    接着,需要在后台Action中进行解析这些数据,本例子使用了阿里巴巴的json解析工具:compile('com.alibaba:fastjson:1.2.8');可以自行进行jar包依赖,处理函数如下:
    @RequestMapping(value = "/sentence", method = RequestMethod.DELETE)
    public String batchDeleteExampleSentence(@RequestBody String jsonInfo) {
        String backMsg = null;
        String message = null;
        JSONObject jsObj = JSON.parseObject(jsonInfo);
        JSONArray jsonArray = jsObj.getJSONArray("content");
        int size = jsonArray.size();
        String idInfo = null;
        String[] id_array = new String[size];
        for (int i = 0; i != size; ++i) {
            idInfo = jsonArray.getObject(i, String.class);
            id_array[i] = idInfo;
        }
 }
    这样便可以取到前台传来的数组内容了,并且赋值给新建的String类型数组。此时到关键的如何进行批量删除这些数据记录了,还是之前说的,本例子通过记录_id进行删除。
 @Override
    public String batchDeleteExampleSentence(String[] sentenceId) throws Exception {
        String message = "success";
        List<ExampleSentenceDO> resultList = new ArrayList<ExampleSentenceDO>();
        int length = sentenceId.length;
        WriteResult writeResult;
        int deleteNum = 0;
        Query query;
        //删除之前在log中记录当前数据总数
        int count = 0;
        count = mongoTemplate.findAll(ExampleSentenceDO.class).size();
        System.out.println("Batch delete sentences-->Before delete ,the collection of exampleSentence total number:"+count);
        //Criteria.where("id").in(sentenceIdTemp)中的参数sentenceIdTemp必须是Object,否则出现警告
        Object[] sentenceIdTemp = sentenceId;
        query = Query.query(Criteria.where("id").in(sentenceIdTemp));
        writeResult = mongoTemplate.remove(query, ExampleSentenceDO.class);
        deleteNum = writeResult.getN();
        System.out.println("Batch delete sentences-->The collection of exampleSentence total numbers that have deleted:"+deleteNum);
        if (deleteNum < length) {
            message = "notExist";
        }
        return message;
    }
}

这样就完成了批量操作了!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值