JPA mongo,可从列表中获取许多内容

时间:2019-04-12 08:25:59

标签: java mongodb jpa

我有一个字符串列表

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);

正确的方法是什么?

1 个答案:

答案 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>