MongDB数据库使用
MongoDB数据库的查询条件或者说习惯对于使用MySQL数据库的开发人员不太友好,这里总结一些API的使用心得,不喜勿喷,有错误可以发评价。
首先介绍我的使用环境:
1.坐标的使用:导入springboot的相关坐标
<!--MongoDB相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
</dependency>
2.驱动坐标及其版本号:spring-boot-starter-data-mongodb 中查到的MongoDB版本号为3.8.2版(不需要写上去,这里只是明确引入坐标的版本)
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.8.2</version>
<scope>compile</scope>
</dependency>
3.MongoDB数据库需要的配置,以springboot框架为例,配置文件如下:
文件名:application.properties
#springboot MongoDB配置
spring.data.mongodb.username=用户名
spring.data.mongodb.password=密码
spring.data.mongodb.authentication-database=一般是admin
spring.data.mongodb.database=数据库名
spring.data.mongodb.port=端口号,默认27017
spring.data.mongodb.host=主机ip
4.相关API(以下API都是调用方法,而非底层源码)
a.保存(保存分为save方法和insert方法)
save有添加的作用,也有更新的作用; 取决于存入的id是否在文档中已经存在
save(T t),save(T t,String “数据库名”);
@Autowired
private MongoTemplate mongoTemplate;
/**
* save有添加的作用,也有更新的作用; 取决于存入的id是否在文档中已经存在
* @param student 学生对象
*/
public void saveStudent(Student student)
{
//返回的结果是保存的对象本身, 所以一般不写
Student result = mongoTemplate.save(student);
}
b.删除
/**
* 根据ObjectId删除记录
*
* @param id ObjectID
*/
public void delStudentByObjectId(ObjectId id)
{
//构造查询条件
Query query = Query.query(Criteria.where("id").is(id));
//删除操作(常用API)
mongoTemplate.remove(query, Student.class);
}
c.修改
修改作用用到的方法是上面说的save方法
d.查询
根据ObjectId查询单个
/**
* 根据ObjectId查找单条记录
* @param id ObjectId
* @return 结果
*/
public Student findStudent(ObjectId id)
{
Query query = Query.query(Criteria.where("id").is(id));
//常用API
Student student = mongoTemplate.findOne(query, Student.class);
return student;
}
查询所有
public List<Student> findList()
{
//第一个参数可以理解为查出的结果应该封装到怎样的对象中,第二个参数可以理解为表名(也可以不写)
return mongoTemplate.findAll(Student.class, "tb_student");
}
根据条件查找
比如查找ObjectId不是1的所有数据
public List<Student> findByCondition()
{
//构造查询条件
Query query=Query.query(Criteria.where("id").ne(1));
//执行查找操作,最后一个参数可以省略(在实体类上已经加上了注解,指定了对应的表名也就是document的名字)
List<Student> list = mongoTemplate.find(query, Student.class, "tb_student");
return list;
}