Java Mongodb сопоставляет регулярное выражение с любым полем документа - PullRequest
0 голосов
/ 09 июля 2020

У меня есть несколько подобных документов.

{
    _id: "1234",
    code:"asdf",
    text:"aas23423",
    ....
{

Мне нужно выполнить поиск по регулярному выражению для каждого значения в моей базе данных. Есть ли способ сделать что-то вроде следующего?

public List<Document> findWithRegex(MongoCollection<Document> collection, String regex){
        Document findQuery = new Document();
        findQuery.append(/*any key in any document*/, Pattern.compile(regex));
        FindIterable<Document> iterable = collection.find(findQuery);
}

Или, если это невозможно, есть ли способ || сделать что-то подобное вместе. Примерно так.

collection.find(document -> document.code.matches(regex-pattern) || document.text.matches(regex-pattern))

1 Ответ

0 голосов
/ 09 июля 2020

Создайте другое поле, которое содержит конкатенацию значений из существующих полей, выполните поиск в этом поле.

Если поля большие, создайте другую коллекцию, в которой в документах есть только поле, используемое для текстового поиска.

Вероятно, вы должны использовать текстовый поиск вместо запросов с регулярным выражением.

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