Spring 操作Mongo 进行增删改查

本文参考资料讲解了利用Spring操作Mongo进行增删改查。在实际开发中遇到多对多模型设计,采用存List集合的方式。还记录了操作Family数据的几个场景,如根据FamilyId查询成员等。开发流程包括设计Collections、写Document实体类,推荐用建造者模式。

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

首先先贴上一个我在查阅资料时参考的一个链接,https://www.jianshu.com/p/a576499769ae,这篇文章大概讲解了如何利用Spring 操作Mongo进行增删改查。但是笔者在实际的开发过程中,遇到了多对多的模型设计,当然笔者第一时间也在互联网搜索了相关的资料,最终采用的设计,是存一个List集合。 

  "_id" : ObjectId("5ea132115cbf0e0d3a5d5578"),
    "Self" : {
        "PersonId" : "1",
    },
    "Family" : [{"FamilyId":" ","role":""}],

但是如何操作Family的数据也花了一番功夫。有几个场景就是(根据FamilyId查询这个家庭下面的所有成员,并且返回前端对应role字段)(将某个人绑定家庭)(修改某个人在某个家庭下的角色)

接下来,记录下自己在开发中详细流程吧,设计好Mongo的Collections后,就写对应的Document实体类了,这里推荐用建造者模式来定义实体,否则后面赋值变量一直用set赋值,代码阅读性太差。


import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@Document
@Builder
public class demo {
          @Field(value = "Family")
          private List<Family> families;
    }
    @Data
    @EqualsAndHashCode(callSuper = false)
    @Builder
    public static class Family{
        private String FamilyId;
        private int role;
    }

}
  • (修改某个人在某个家庭下的角色)
    1. contorller层
 @ApiOperation("成为管理员")
 @PostMapping("/becomeAdmin")
 public R<?> becomeAdmin(@RequestParam String PersonId,@RequestParam String FamilyId) 
 {

      mongoUserProfileService.becomeAdmin(PersonId,FamilyId);
 }

      2  .    service层

  Query query = Query.query(new Criteria().andOperator(Criteria.where("Self.PersonId").is(personId),Criteria.where("Family").elemMatch(Criteria.where("FamilyId").is(familyId))));
Update update=new Update();
        update.set("Family.$.role",2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值