Mongodb
MongoDB是一个开源、高性能、无模式【模式自由】的文档型数据库
应用场景:
- 支持文本查询
- 不需要支持事务,不存在复杂的多表查询,不支持join操作
- 存储数据可持久化
- 需要TB甚至 PB 级别数据存储
- 需求变化较快,数据模型无法确认,预计使用快速迭代开发形式
- 需要至少2000以上的读写QPS【高性能】
- 能支持快速水平扩展【高扩展】
- 99.999%高可用【高可用】
特点
- 1、模式自由 ---- 不需要提前创建表,直接放数据就可以
- 2、支持高并发 2000以上
- 3、搭建集群比较方便
- 4、支持海量数据存储
- 5、介于关系型数据库和非关系型数据库之间的一款数据库
- 6、ObjectID 用来生成主键
代码速成
新增
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void saveTest() {
ApAssociateWords apAssociateWords = new ApAssociateWords();
apAssociateWords.setAssociateWords("黑马大家庭");
apAssociateWords.setCreatedTime(new Date());
mongoTemplate.save(apAssociateWords);
}
查询
ID查询
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void saveFindOne() {
ApAssociateWords words = mongoTemplate.findById("651fc9f01588cc4e402c476a", ApAssociateWords.class);
System.out.println(words);
}
条件查询
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void testQuery() {
Query query = new Query();
query.addCriteria(Criteria.where("associateWords").is("黑马大家庭")
.and("createdTime").gt(new Date()))
//排序
.with(Sort.by(Sort.Direction.DESC,"createdTime"))
//分页
.limit(10);
List<ApAssociateWords> list = mongoTemplate.find(query, ApAssociateWords.class);
list.forEach(System.out::println);
}
删除
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void testDel() {
Query query = new Query();
query.addCriteria(Criteria.where("associateWords").is("黑马大家庭"));
mongoTemplate.remove(query,ApAssociateWords.class);
}
修改
可以直接沿用save方法,如果存在ID,会直接覆盖,不存在直接保存,用insert方法只能保存