Как сделать mongodb поиск строки в массиве строк - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отфильтровать список объектов на основе объектов, включающих определенное строковое значение внутри массива строкового поля.

Структура коллекции:

{
    "_id" : ObjectId("5b55aabe0550de0021097bf0"),
    "snomedId" : "SNOMED ID",
    "status" : "INACTIVE",
    "clientIds" : [
        "5b55aabd0550de0021097b6e",
        "5b55aabd0550de0021097b6d",
        "5b55aabd0550de0021097b6c"
    ]
}

Модельclass:

public class Hotel extends PersistedObject {

    private Status status;
    private List<String> clientIds = new ArrayList<>();

}

Метод Query:

  @Query("{'clientIds': { $in: { 'clientId' : ?1 } }}")
    List<Diagnosis> searchFilterByClientId(String term,String clientId);

Итак, здесь я хочу получить список отелей, который содержит передаваемое значение clientId внутри списка поля clientId.Но это возвращает следующее исключение: «Запрос не выполнен с кодом ошибки 2 и сообщением об ошибке« $ in нуждается в массиве »'

1 Ответ

0 голосов
/ 20 июня 2019

Не нужно использовать $in. Простого поиска по clientId здесь было бы достаточно.

db.collection.find({clientIds: "5b55aabd0550de0021097b6e"})

Или в вашем случае:

  @Query("{'clientIds': ?1}")
    List<Diagnosis> searchFilterByClientId(String term,String clientId);

MongoPlayground

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...