Пакетный запрос существует в Spring MongoDB / существует для нескольких идентификаторов - PullRequest
0 голосов
/ 24 октября 2019

У меня есть список из тысяч идентификаторов, и на основании этих идентификаторов я хочу определить, какие сущности существуют в моей БД, потому что список большой, я не могу позволить себе отправлять тысячи запросов синхронно, BulkOperations мне не поможетпотому что он поддерживает только операции вставки, обновления и удаления. Я не могу использовать findAll(Query query..), потому что каждая сущность содержит массивные двоичные поля и, насколько я знаю, Spring не поддерживает отложенную загрузку в MongoDB.

Чего я хочу достичь:

List<String> ids = getIds();
List<Boolean> existsList = repository.exists(ids);

1 Ответ

0 голосов
/ 24 октября 2019

У меня есть вариант, но, вероятно, более оптимальный, я сделал все, что мог, пока (новичок). Вы можете только одним запросом сделать что-то подобное:

  • $ match: {_ id: {$ in: ids}} // Выделите все элементы, соответствующие любому из идентификаторов в идентификаторах
  • $ project: {index: {$ indexOfArray: [ids, "$ _id"]}} // добавить поле индекса, показывающее положение каждого элемента в передаваемом вами массиве идентификаторов. С этими результатами вы можете получить, какой индекс никогда не появитсяна результаты и поэтому знаю, что они не существуют в вашей базе данных. Я знаю, что должно быть проще, но это все, что у меня есть ^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...