Как сделать запрос регулярного выражения в поле ObjectId mongodb - PullRequest
3 голосов
/ 10 апреля 2011

это немного сложно .. как вы делаете запрос регулярного выражения в поле ObjectId?

Я использую Java API, так что это то, что у меня есть до сих пор

BasicDBObject q = new BasicDBObject()
q.put(field, Pattern.compile(value, Pattern.CASE_INSENSITIVE));

это прекрасно работает для любого обычного поля. но, похоже, не работает с полем ObjectId. что я предполагаю, потому что я не могу сравнить ObjectId со строкой? и я не могу просто вставить частичный идентификатор или регулярное выражение в новый ObjectId. это просто выдаст ошибку.

есть идеи по этому поводу? Я пытаюсь дать пользователям возможность ввести часть идентификатора и получить возможность вернуть все документы с этим шаблоном.

Заранее спасибо!

1 Ответ

4 голосов
/ 10 апреля 2011

Насколько я знаю, ObjectId является собственным типом в MongoDB и не ведет себя как строка.И хотя в MongoDB есть другие типы, отличные от строковых, такие как массивы и т. Д., Которые можно искать по шаблону регулярных выражений, это кажется невозможным для ObjectId.Для реализации поиска по идентификатору, подобного вашему, я бы, вероятно, определил собственное индексированное поле идентификатора, которое содержит идентификатор в виде простой строки и холодного плеча ObjectId.

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