JPA Монго, принести много из списка - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть список строк

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 голосов
/ 12 апреля 2019

Вы можете использовать шаблон Mongo и запрос критериев с помощью оператора $in MongoDB следующим образом:

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

Конечно, вы должны добавить зависимость mongo данных пружины в pom, если выиспользуете maven:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...