spring-boot-mongodb 基础入门

发布的第一篇文章 纪念一下 一下就是简单的mongodb整合

@Test
    public void insert() {
        //save 再保存如果_id 存在时会更新数据库
        //inset 如果存在_id会报错 可以批量加入
        List<User> list = Arrays.asList(new User(1232131, "23", 468), new User(12423311, "23", 468));
        mongoTemplate.insert(list, "test");
    }
@Test
public void select() {
    //Mongodb 一列可以不同类型 但是映射过来的对象只能固定类型 数字都用float
    List<User> all = mongoTemplate.findAll(User.class, "test");
    System.out.println(all);
}

@Test
public void selectById() {
    //Mongodb 一列可以不同类型 但是映射过来的对象只能固定类型 数字都用float
    //如果不选中则按user里指定的 别名和原始名都可以
    Query query = Query.query(Criteria.where("name").is(23));


    //小于等于 +e 包含等于
    query = Query.query(Criteria.where("age").lt(56));
    //大于等于
    query = Query.query(Criteria.where("age").gt(56));


    //并且查询 通过链式可以加多条件
    Query.query(Criteria.where("name").is(23).and("age").is(563));

    //或者 需要把两种情况写入
    //需要new Criteria()往其中放入两种情况 这里不能链式编程 这里必须new 一个对象 链式自动返回当前对象
    // or 是一个方法必须依赖对象才能调用 所以必须通过.以后的才能添加orOperator 后填入数据
    Query.query(new Criteria().orOperator(Criteria.where("name").is("1"), Criteria.where("name").is("1")));


    //and + or or可以被以链式编程的.添加 or本身不能用链式
    Query.query(Criteria.where("name").is(12).orOperator(Criteria.where("name").is(3), Criteria.where("age").is(8)));

    List<User> list = mongoTemplate.find(query, User.class);
    list.forEach(System.out::println);
    System.out.println(list);

    //排序 可以再查询后的链式添加with
    Query Q = new Query();
    Q.with(Sort.by(Sort.Order.asc("age")));
    List<User> list1 = mongoTemplate.find(Q, User.class);
    System.out.println(list1);

    //排序 可以再查询后的链式添加with
    Query q = new Query();
    //从第几个后开始skip跳过 后面limit 显示几个
    q.with(Sort.by(Sort.Order.asc("age"))).skip(1).limit(2);
    List<User> list2 = mongoTemplate.find(q, User.class);
    System.out.println(list2 + "-排序 可以再查询后的链式添加with");

    //查询条数
    long count = mongoTemplate.count(q, User.class);
    System.out.println(count);

    //去重
    List<String> name = mongoTemplate.findDistinct(new Query(), "name", User.class, String.class);
    System.out.println(name);

    //用最基础的语句也行 提供一个映射
    List<User> list3 = mongoTemplate.find(new BasicQuery("{name:'23'}"), User.class);
    System.out.println(list3);

    //直接通过id查询
    User byId = mongoTemplate.findById("12431", User.class, "test");
    System.out.println(byId);

}

@Test
public void update() {
    Update update = new Update();
    update.set("age", 100);
    //更新一条
    //  mongoTemplate.updateFirst(Query.query(Criteria.where("id").is(1231)),update,User.class);
    //更新多条
    UpdateResult id = mongoTemplate.updateMulti(Query.query(Criteria.where("id").is("1231")), update, User.class);
    //获取修改数据的属性等
    System.out.println(id.getMatchedCount());
    System.out.println(id.getModifiedCount());
    //返回一个BsonValue 对象
    BsonValue upsertedId = id.getUpsertedId();
    System.out.println(upsertedId);
}


@Test
public void remove() {
    //删除指定数据 根据类默认collection
    DeleteResult name = mongoTemplate.remove(Query.query(Criteria.where("name").is("123")), User.class);
    //获取删除属性
    System.out.println(name.getDeletedCount());
}

对应依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

对应类Entity


@Document("test") //放到哪个集合
@Data
@AllArgsConstructor
public class User {
    @Id
    private Integer Id;
    @Field("username")
    private String name;
    @Field("num")
    private Integer age;


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值