我有一个字符串列表
List<String> myList = new ArrayList<>();
myList.add("1");
myList.add("2");
myList.add("3");
我想通过循环检查类似这样的字段来查找数据库条目。
@Repository
public interface MyRepository extends MongoRepository<MyObject, String> {
public MyObject findByxfield(String xfield);
}
我该如何实现:
如果Myobject.somefield == myList(i),则将MyObject存储在 列出并返回给用户。
说明:
假设MyObject类具有以下字段:
@Entity
@Document(collection = "MyObject")
public class MyObject{
private ObjectId _id;
private String xfield;
private String somefield;
}
我想在我的存储库中使用这种功能,而无需for循环:
public List<MyObject> findAllBySomefieldList(List<String> somefield);
在我的应用程序中:
List<MyObject> myObjects = myRepository.findAllBySomefieldList(myList);
正确的方法是什么?
答案 0 :(得分:0)
您可以通过MongoDB的$in
运算符使用Mongo模板和条件查询,如下所示:
@Autowired // if you are using spring, if not just handle it yourself
private MongoTemplate mongoTemplate;
Query query=new Query();
query.addCriteria(Criteria.where("somefield").in(myList));
List<MyObject> myObjects=mongoTemplate.find(query, MyObject.class);
当然,如果您使用的是maven,则必须在pom中添加spring数据mongo依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>