Spring Идентификатор поисковой системы MongoDB по строке

У меня есть простое веб-приложение spring, которое использует mongodb. У меня есть требование поиска идентификатора коллекции по строке, где строка должна работать с выражением regex. Метод создания моих критериев выглядит следующим образом.

public Criteria getSearchCriteriaQuery(String keyword, String colomnArray[]){
 Criteria[] criteriaList = new Criteria[colomnArray.length];
 for (int i=0; i
<p>Мой домен выглядит следующим образом</p> <pre class="prettyprint linenums">@Document public class sampleDomain{ @Id private String id; .... }</pre> <p>Когда я использую "id" / "_id" в качестве имени столбца, он ничего не возвращает, даже если я отправляю допустимую строку как ключевое слово. Пример запроса, который я попробовал, приведен ниже</p> <pre class="prettyprint linenums">id in db - 560299fe627942619bcfdc87 keyword - 560</pre> <p>Есть ли решение для этого? Спасибо заранее</p>
1 ответ

Это не сработает, я думаю. Идентификатор MongoDb не является строкой, а ObjectId, который может быть представлен как строка, но не обрабатывается как один. Поэтому выполнение регулярного выражения в ObjectId означает, что mongo придется распаковывать каждый ObjectId в String, а затем выполнять регулярное выражение на нем. Это было бы безумно неэффективно.

Если у Spring -data-mongo есть что-то в рукаве, вам может потребоваться переосмыслить вашу модель и ваши запросы.

Потому что это странный вариант использования MongoDB для создания регулярного выражения на ObjectId. Можете ли вы объяснить, почему вы это делаете и почему вы не используете другое поле для регулярного выражения?

С уважением Крис

licensed under cc by-sa 3.0 with attribution.