使用到的数据结构
@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);