mongoTempalte 查询功能
说到查询是非常重要而且非常常用的,我们首先要明白Spring是怎么查询的。
这就要说到两个类:
Criteria是标准查询的接口,可以引用静态的Criteria.where的把多个条件组合在一起,就可以轻松地将多个方法标准和查询连接起来,方便我们操作查询语句。
例如:我们要查询 id为110 的一条数据。
Query query = new Query(Criteria.where("id").is(110));
这就是简单的一条sql;我们直接调用Criteria.where
静态方法就可以直接查询 “等于”
。
当我们多个条件组合查询
时:
例如:我们要查询:id=1 and name="小王"
Query query =new Query(Criteria.where("id").is(1).and("name").is("小王"));
例如:我们要查询:id=1 or name="小王"
Query query =new Query(new Criteria().orOperator(Criteria.where("id").is(1),Criteria.where("name").is("小王")));
* 添加文档主要介绍两种方式:
* mongoTemplate.insert("实体对象","集合名"); 往集合插入数据的方式
* mongoTemplate.save(对象,集合名(可省略)); 参数必须是对象
* insert和save都适用
* 不写集合名,默认对象类名作为集合名(如实体类是A 集合名是a)
* 写集合名,则把数据写到对应集合下
* 1.void save(Object var1); 传入对象,不传集合名
* 2.void save(Object var1, String var2); 传入对象,传集合名
* 3.void insert(Object var1); 传入对象,不传集合名
* 4.void insert(Object var1, String var2); 传入对象,传集合名
* 5.void insert(Collection extends Object> var1, Class> var2); 下面三个方法是批量插入的实现方法
* 6.void insert(Collection extends Object> var1, String var2);
* 7.void insertAll(Collection extends Object> var1);
* 查询mongodb的操作:
* find 和findone方法都有两种实现
* 1.List find(Query var1, Class var2) 不指定集合名
* 2.List find(Query var1, Class var2, String var3) 指定集合名
* 3. T findOne(Query var1, Class var2); 不指定集合名
* 4. T findOne(Query var1, Class var2, String var3);指定集合名
* eg。
* maxvalue在数据库中就对应一个集合,可以不指定集合名直接查询
* Sl6512014 在数据对应很多集合 必须知道集合名才能查询出数据
*
* findall
* 1. List findAll(Class var1); 根据类型查询所有
* 2. List findAll(Class var1, String var2); 查询集合下的该类型数据
*
* findById:
* T findById(Object var1, Class var2); var1 是mongodb的_id子段值
* T findById(Object var1, Class var2, String var3); 指定集合名
* 更新操作:
* updateFirst 更新符合条件的第一条 updateMulti 更新多个,符合条件都会更改
* //修改第一条符合条件数据
* 1.WriteResult updateFirst(Query var1, Update var2, Class> var3); 指定类型
* 2.WriteResult updateFirst(Query var1, Update var2, String var3); 更新操作指定集合名
* 3.WriteResult updateFirst(Query var1, Update var2, Class> var3, String var4); 详细指定类型和集合名
* //批量修改
* 4.WriteResult updateMulti(Query var1, Update var2, Class> var3); 指定类型
* 5.WriteResult updateMulti(Query var1, Update var2, String var3); 指定集合名
* 6.WriteResult updateMulti(Query var1, Update var2, Class> var3, String var4); 详细指定类型和集合名
* //同updateFirst
* 7.WriteResult upsert(Query var1, Update var2, Class> var3);
* 8.WriteResult upsert(Query var1, Update var2, String var3);
* 9.WriteResult upsert(Query var1, Update var2, Class> var3, String var4);
* 删除操作:
* 1.WriteResult remove(Object var1);
* 2.WriteResult remove(Object var1, String var2);
* 3.WriteResult remove(Query var1, Class> var2); 根据条件删除
* 4.WriteResult remove(Query var1, Class> var2, String var3); 详细指定类型和集合名进行删除
* 5.WriteResult remove(Query var1, String var2); 指定集合名进行删除
* 其他一些操作:简单介绍:
* //查询出后删除
* List findAllAndRemove(Query var1, String var2); 指定集合名
List findAllAndRemove(Query var1, Class var2); 指定类型
List findAllAndRemove(Query var1, Class var2, String var3); 在集合下查询删除的类型数据
//查处后修改
T findAndModify(Query var1, Update var2, Class var3); 指定修改类型
T findAndModify(Query var1, Update var2, Class var3, String var4); 在集合下修改的数据类型
T findAndModify(Query var1, Update var2, FindAndModifyOptions var3, Class var4);
T findAndModify(Query var1, Update var2, FindAndModifyOptions var3, Class var4, String var5);
T findAndRemove(Query var1, Class var2);
T findAndRemove(Query var1, Class var2, String var3);
//判断是否存在
boolean exists(Query var1, String var2);
boolean exists(Query var1, Class> var2);
boolean exists(Query var1, Class> var2, String var3);