springBoot集成mongo相关常用基础和复杂操作

27 篇文章 2 订阅
21 篇文章 0 订阅

一、查询

public <T> T selectMongoTopOne(Integer f1, String f2, String f3, Class<T> clazz) {
        Criteria[] arr = new Criteria[3];
        arr[0] = Criteria.where("field1").is(f1);
        arr[1] = Criteria.where("field2").is(f2);
        arr[2] = Criteria.where("field3").is(f3);
        Criteria criteria = new Criteria().andOperator(arr);
        Query query = new Query(criteria);
        query.with(Sort.by(Sort.Order.desc("createdTime"))).limit(1);
        return mongoTemplate.findOne(query, clazz);
}

提示:clazz为对应的mongo文档集合类

二、基本修改操作

private <T> void mongoUpdatePush(Integer f1, String f2, String updateKey, Object UpdateValue, Class<T> tClass) {
        Query query = new Query();
        query.addCriteria(Criteria.where("field1").is(f1).and("field2").is(f2));
        Update update = new Update();
        update.set(updateKey, UpdateValue);
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, tClass);
        log.info("查询mongo数据匹配{}条记录,修改了{}条记录", updateResult.getMatchedCount(), updateResult.getModifiedCount());

提示:tClass为对应的mongo文档集合类

三、数组中插入对象数据(重复则不插入)

 private <T> void mongoUpdatePush(Integer f1, String f2, String updateKey, Object UpdateValue, Class<T> tClass) {
        Query query = new Query();
        query.addCriteria(Criteria.where("field1").is(f1).and("field2").is(f2));
        Update update = new Update().addToSet(updateKey, UpdateValue);
        mongoTemplate.updateFirst(query, update, tClass);
    }

提示:tClass为对应的mongo文档集合类

四、数组中插入对象数据(添加过滤条件,对存在的数组项进行修改操作)

private void mongoUpdateSet(Integer f1, String f2, String dataName, BasicDBObject update) {
	    // 修改arrays数组下的某条记录dataUid变量值为test
	    BasicBSONObject eleSetBson = new BasicBSONObject();
        eleSetBson.put("arrays.$[arrays].dataUid", "test");
        BasicDBObject update = new BasicDBObject();
        update.put("$set", eleSetBson);
        // 查询对应唯一集合
        Criteria criteria = Criteria.where("field1").is(f1).and("field2").is(f2);
        // 拼接数组过滤filter参数-updateOptions 
        UpdateOptions updateOptions = new UpdateOptions();
        List list = new ArrayList();
        BasicDBObject eleFilterBson = new BasicDBObject();
        eleFilterBson.put("arrays.dataName", dataName);
        list.add(eleFilterBson);
        updateOptions.arrayFilters(list);
        mongoTemplate.getCollection("t_datas").updateOne(
                criteria.getCriteriaObject(),
                update,
                updateOptions
        );
    }

提示:array.dataName中array为数组变量名称,dataName为数组中的具体某个变量名,t_datas为对应的mongo文档集合名称。arrays.$[arrays].dataUid中的dataUid为数组下的具体某个变量名

参考文章:

https://blog.csdn.net/weixin_42260311/article/details/115634232

https://blog.csdn.net/maying0124/article/details/120214034

https://www.codercto.com/a/64352.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值