MongoDB 查询有四种方式:Query,TextQuery,BasicQuery 和 Bson ,网上太多关于 Query 的查询方式,本文只记录 BasicQuery和Bson 的方式,BasicQuery 相对于 Query 更加的灵活,BasicQuery 就是 Query 的扩展,BasicQuery 可以返回指定列数据。最灵活的是Bson方式。
大写的采坑经验:
1.MongoDB 虽然存储很灵活,但是,不要存储Map类型的,不要存储Map类型的,不要存储Map类型的。尽量存储强类型的,尽量存储强类型的,尽量存储强类型的。如果有Map类型的,对于查询指定列的,只能用Bson ,如果是强类型的,就可以直接用Query,TextQuery。
2.复杂类型查询 可以考虑 Bson 方式,Bson 请参考文章最后。
安装Maven包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
测试数据代码
for (Long i = 0L; i < 10L; i++) { MongoDBTestVo vo=new MongoDBTestVo(); vo.setUserId(i); vo.setEmail("1@1.com"); vo.setName("test"+i.toString()); vo.setPhone(i.toString()); vo.setCreateDate(new Date()); mongoTemplate.insert(vo,"mongodbtest"); }
public class MongoDBTestVo implements Serializable { private Long userId; private String email; private String name; private String phone; private Date createDate; public Long getUserId() { return userId; } public void setUserId(Long userId) { this.userId = userId; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }