mongodbTemplate初体验

本文详细介绍了使用@Autowired的MongoTemplate在Java中进行MongoDB数据库的操作,包括findAndModify()用于更新特定条件的记录,findAndRemove()删除匹配条件的数据,findOne()和findMany()查询单条或多条记录,drop()删除集合,以及insert()和insertMany()插入单条或批量数据。同时,文章探讨了@DBRef的使用,说明如何处理文档间的引用,避免保存整个文档,提高存储效率。

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

@Autowired
MongoTemplate mongoTemplate;

@Test
public void findAndModify(){
    Criteria c = Criteria.where("userid").is("1001");
    Query query = new Query(c);
    Update update = new Update();
    update.set("nickname","秦始皇");
    mongoTemplate.findAndModify(query,update,Comment.class);
}
@Test
public void findAndRemove(){
    Criteria c = Criteria.where("userid").is("1001");
    Query query = new Query(c);
    mongoTemplate.remove(query,Comment.class);
}
@Test
public void findOne(){
    Criteria c = Criteria.where("userid").is("1003");
    Query query = new Query(c);
    Comment one = mongoTemplate.findOne(query, Comment.class);
    System.out.println(one);
}
@Test
public void findMany(){
    Criteria c = Criteria.where("userid").is("1003");
    Query query = new Query(c);
    List<Comment> comments = mongoTemplate.find(query, Comment.class);
    System.out.println(comments);
}
@Test
public void drop(){
    mongoTemplate.dropCollection(Comment.class.getSimpleName());
}
@Test
public void insert(){
    Comment comment=new Comment();
    comment.setArticleid("666666");
    comment.setId("60941353d1493938cc6a1336");
    comment.setContent("六王毕四海一");
    comment.setCreatedatetime(LocalDateTime.now());
    comment.setUserid("1002");
    comment.setNickname("秦始皇");
    comment.setState("1");
    comment.setLikenum(0);
    comment.setReplynum(0);
    mongoTemplate.save(comment);
}
@Test
public void insertMany(){
    List list = new ArrayList();
    for (int i = 0; i <3 ; i++) {
        Comment comment=new Comment();
        comment.setArticleid("666666"+i);
        comment.setContent("六王毕四海一"+i);
        comment.setCreatedatetime(LocalDateTime.now());
        comment.setUserid("1002"+i);
        comment.setNickname("秦始皇"+i);
        comment.setState("1"+i);
        comment.setLikenum(0);
        comment.setReplynum(0);
        list.add(comment);
    }
    mongoTemplate.insert(list,Comment.class.getSimpleName().toLowerCase());
}
总结:findAndModify只会修改你设置的条件,不会修改所有字段。save方法带id,若id存在,则会修改而不插入,不带id或id不存在会插入。

@DBRef
private User user;
@DBRef
private List userList;

如果不加@DBRef,就保存整个User 文档信息,如果加上了,只保存User 文档的id。
比如User 文档里面如果保存了整个User 表的信息,User 文档内容太多了,应该只保存User 文档的id。
如果加上了@DBRef,保存User 表不会保存User 表,User 表文档应该先单独保存,然后保存User 表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值