数据库 —— MongoDB在java项目中的使用

本文详细介绍了使用MongoTemplate进行数据的增删改查操作,包括遍历新增、批量新增、条件删除、更新及查询等核心功能,并提供了具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用到的数据结构

@Autowired
private MongoTemplate mongoTemplate;

新增

save —— 遍历新增

// 遍历插入,如果_id已存在,则更新
mongoTemplate.save(abc);

insert —— 不遍历新增

//不遍历的新增,效率较高,如果_id存在,会报错
mongoTemplate.save(abc);

insertAll —— 批量新增

ArrayList<ABC> abcs = new ArrayList<>();
abcs.add(abc1);
abcs.add(abc2);
mongoTemplate.insertAll(abcs);

删除

findAllAndRemove —— 查询出符合条件的所有结果,并将符合条件的所有数据删除

Query query = new Query(Criteria.where(id).is(delId));
mongoTemplate.findAllAndRemove(query, ABC.class);

findAndRemove —— 查询出符合条件的第一个结果,并将符合条件的数据删除,只会删除第一条

Query query = new Query(Criteria.where(id).is(delId));
mongoTemplate.findAndRemove(query, ABC.class);

remove —— 删除符合条件的数据

// 删除author为xuexiaofei的数据
Query query = Query.query(Criteria.where("author").is("xuexiaofei"));
// 指定集合对应的实体类
mongoTemplate.remove(query, Article.class);

query = Query.query(Criteria.where("author").is("xuexiaofei"));
// 指定MongoDB集合名称
mongoTemplate.remove(query, "article_info");

更新

update

updateFirst —— 更新符合条件的第一条

updateMulti —— 更新所有符合条件的数据

upsert —— 先查询,如果没有符合条件的,会执行插入,插入的值是查询值 + 更新值。

findAndModify —— 原子性

查询

find —— 列表查询

Criteria criatira = new Criteria();
criatira.andOperator(Criteria.where("superId").is(superId));
Query query=new Query(criatira);
// 分页对象
query.with(pageable);
// 排序对象
query.with(sort);
return template.find(query , xxx.class);

findone

findAll

findById

Document —— 查询结果返回指定字段

Document queryObject = new Document();
queryObject.put("_id", problemId);
Document fieldsObject=new Document();
//需要返回的字段置为1
fieldsObject.put("isSolve", 1);
Query query=new BasicQuery(queryObject, fieldsObject);
MongoProblem problem = template.findOne(query , MongoProblem.class);

count —— 返回符合条件的数据条数

Criteria criatira = new Criteria();
criatira.andOperator(Criteria.where("superId").is(problemId));
Query query=new Query(criatira);
//查询出符合条件数据的条数
Long count =  template.count(query, xxx.class);

分页

//分页
Pageable pageable =PageRequest.of(page, size);
query.with(pageable);

排序

//排序
Sort sort = new Sort(Sort.Direction.DESC,"createTime");
query.with(sort);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇宙超级无敌程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值