引入依赖:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-mongodbartifactId>
dependency>
创建一个 ”products“ 集合,如果不存在则创建,存在则不创建。
@Test
public void createCollection() {
//不存在集合则创建
if (!mongoTemplate.collectionExists("products")) {
mongoTemplate.createCollection("products");
}
}
@Test
public void dropCollection() {
mongoTemplate.dropCollection("products");
}
@Document
@Id
_id
的值@Field
@Transient
首先创建一个 User 类,给它一些基本属性。
@Data
@AllArgsConstructor
@NoArgsConstructor
//表示类实例代表mongo中一条文档
@Document("users")
public class User {
private Integer id;
private String name;
private Double salary;
private Date birthday;
}
向 users 集合中添加文档:
@Test
public void saveDocument() {
User user = new User(1, "zhj", 25000.0, new Date());
//mongoTemplate.save(user);
mongoTemplate.insert(user);
}
@Test
public void batchSaveDocument() {
List<User> users = Arrays.asList(
new User(3, "张三", 25000.0, new Date())
, new User(4, "李四", 25000.0, new Date())
);
mongoTemplate.insert(users,User.class);
}
批量添加建议使用 insert()
方法,可以一次性插入整个数据,效率更高。
List<User> users = mongoTemplate.findAll(User.class);
//List users1 = mongoTemplate.findAll(User.class, "users");
User user = mongoTemplate.findById(1, User.class);
List<User> users1 = mongoTemplate.find(Query.query(Criteria.where("name").is("zs")), User.class);
List<User> users2 = mongoTemplate.find(Query.query(Criteria.where("salary").gt(30000)), User.class);
List<User> users3 = mongoTemplate.find(Query.query(Criteria.where("name").is("zs").and("salary").is(25000)), User.class);
Criteria criteria = new Criteria();
criteria.orOperator(
Criteria.where("name").is("张三"),
Criteria.where("name").is("李四")
);
List<User> users4 = mongoTemplate.find(Query.query(criteria), User.class);
List<User> users5 = mongoTemplate.find(Query.query(Criteria.where("salary").is(25000.0).orOperator(Criteria.where("name").is("zs"))), User.class);
Query query = new Query();
query.with(Sort.by(Sort.Order.asc("id")));
List<User> users6 = mongoTemplate.find(query, User.class);
Query pageQuery = new Query();
//查询第一页数据,每页展示两条数据
pageQuery.with(Sort.by(Sort.Order.desc("id")))
.skip(0)
.limit(2);
List<User> users7 = mongoTemplate.find(pageQuery, User.class);
long count = mongoTemplate.count(new Query(), User.class);
System.out.println("总条数为:" + count);
List<String> names = mongoTemplate.findDistinct(new Query(), "name", User.class, String.class);
BasicQuery basicQuery = new BasicQuery("{name:'zs'}");
List<User> users8 = mongoTemplate.find(basicQuery, User.class);
Update update = new Update();
update.set("salary",300000.0);
//更新符合条件的第一条数据
mongoTemplate.updateFirst(Query.query(Criteria.where("name").is("zs")),update,User.class);
Update update = new Update();
update.set("salary",300000.0);
//将所有满足条件的文档都修改
mongoTemplate.updateMulti(Query.query(Criteria.where("name").is("zs")),update,User.class);
Update update = new Update();
update.set("id",6);
update.set("salary", 300000.0);
//没有符合条件的数据,则插入数据
mongoTemplate.upsert(Query.query(Criteria.where("name").is("ls")),update,User.class);
如果没有包含”ls“这条文档,那么就会插入”ls“这条文档,但是如果id重复,那么就会抛出异常。
Update update = new Update();
update.set("salary", 300000.0);
//没有符合条件的数据,则插入数据
UpdateResult upsert = mongoTemplate.upsert(Query.query(Criteria.where("name").is("ww")), update, User.class);
//获取本次修改记录条数
long modifiedCount = upsert.getModifiedCount();
System.out.println(modifiedCount);
//获取本次匹配的记录条数
long matchedCount = upsert.getMatchedCount();
System.out.println(matchedCount);
//当集合种没有对应的文档,那么就插入文档,获得插入文档自动生成的id
System.out.println(upsert.getUpsertedId());
mongoTemplate.remove(new Query(),User.class);
mongoTemplate.remove(Query.query(Criteria.where("name").is("ls")),User.class);