坑,好大的一个坑,来的先甩个赞
先把model扔出来
package com.taikang.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Author: LiuYan
* @Description:
* @Date: Created in 17:01 2019/4/11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestModel {
private String _id;
private String score;
private List<HahaModel> list;
}
package com.taikang.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @Author: LiuYan
* @Description:
* @Date: Created in 17:03 2019/4/11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HahaModel {
private String age;
private String name;
}
在mongo库里存储了几个数据
package com.taikang.dao;
import com.taikang.domain.TestModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author itw_liuyan01
* @create 2018-01-08 14:41
* @desc 智能提醒调用的原子服务
*/
@Repository
public interface TestDao extends MongoRepository<TestModel, String> {
@Query(value = "{'list.name':'?0','list.age':'?1'}")
List<TestModel> find(String name, String age);
}
注意啊
"{'list.name':'?0','list.age':'?1'}"
?0这个是占位符,对应方法里的name,?1就是age呗
你其实还可以指定@query里的field,这个是指定查出来哪个值返回给你,具体的别人都写过,搜一下都有
我要说的是?0两边一定要加'',不然条件是两个的时候是会报错的
要是就一个"{'list.name':?0}"你这么写也没毛病
这不就查出来了,你要是指定@Query了方法名好像注意点别用by这by那得就行最好别冲突springdata那种命名方式。
下面再来几个链接可以看看: