• spring mongodb增删改查操作


    添加数据

    • School
    @Id
    @GeneratedValue
    private long id;
    @Indexed(unique = true)
    private String name;
    
    • student
    @Id
    @Field("_id")
    private String id;
    private String name;
    @DBRef
    private School school;
    
    • dao
    public interface SchoolRepository extends MongoRepository<School, Long> {
    }
    public interface StudentRepository extends MongoRepository<Student, String> {
    }
    
    • 添加数据
    School s1 = new School("淮阴工学院");
    School s2 = new School("南京大学");
    schoolRepository.save(s1);
    schoolRepository.save(s2);
    
    Student s1 = new Student("张三", new School(1));
    Student s2 = new Student("李四", new School(1));
    studentRepository.save(s1);
    studentRepository.save(s2);
    

    删除数据

    删除一个学校试试?

    schoolRepository.deleteById(1L);
    

    删除学校后,发现引用该学校的学生没有被删除

    • 查询学生试试看?

    因此,需要自己来维护关系,如有需要,自己手动级联删除

    查询

    使用基于接口的动态代理类- MongoRepository<>

    List<Outline> findOutlineByNameAndCourse(String name, Course course);
    
    • 分页查询
    //创建匹配器,即如何使用查询条件
    ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
            .withIgnoreCase(true) //改变默认大小写忽略方式:忽略大小写
            .withMatcher("articleTitle", ExampleMatcher.GenericPropertyMatchers.contains()); //采用“包含匹配”的方式查询
    Example<Article> example = Example.of(article, matcher);
    Page<Article> data = articleRepository.findAll(example, page);
    

    MongoDBTemplate

    • Query
    Pattern pattern = Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE);
    Query query = Query.query(Criteria.where("name").regex(pattern).and("grade").is(new Grade(gradeId)));
    query.limit(20);
    List<Course> courses = mongo.find(query, Course.class);
    

    忽略大小写

    Criteria.where("name").regex("admin", "i")
    

    修改

    • 使用mongoTempalte
    // 条件
    Criteria where = Criteria.where("username").is("admin");
    Query query = Query.query(where);
    Update update = new Update();
    update.set("username", "admin66");
    UpdateResult upsert = mongoOperations.upsert(query, update, User.class);
    
  • 相关阅读:
    SQL Server中的执行引擎入门
    SQL Server复制入门(一)复制简介
    Django 代码片断收集(持续更新)
    今天思路有点乱,随便记一点关于 xmlrpc 的
    PIL 学习笔记(1)
    Django newforms
    在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用
    今天在 Linux 上顺利编译 PIL 1.1.6 成功
    用 PIL 写了个简单的缩略图生成程序
    [转贴] 中药内外合治急慢性鼻窦炎
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/10556866.html
Copyright © 2020-2023  润新知