发布的第一篇文章 纪念一下 一下就是简单的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;
}