Возможно ли в MongoDb запрашивать шаблоны, соответствующие заданной строке? - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть система сообщений, где я хочу, чтобы разные обработчики сообщений были вызывается в зависимости от структуры входящих сообщений.

У меня есть эта коллекция:

[
    { Pattern: "^a", Handler: "Handler1" },
    { Pattern: "^b", Handler: "Handler2" },
    { Pattern: "^c", Handler: "Handler3" }
]

Для данного сообщения (строки) я теперь хочу найти первый элемент где сообщение соответствует шаблону, а затем извлечь обработчик имя.

То есть для сообщения "бла бла бла" я хочу извлечь "Handler2".

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

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

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Вам должно быть хорошо, как вы делаете это прямо сейчас, если количество шаблонов невелико.

Если у вас большое количество паттернов, вы станете жертвой варианта Остановки : Нет простого способа узнать, соответствует ли шаблон (или нет), пока вы на самом деле не выполните его со своей входной строкой (представьте шаблон как мини-программу).

Или: Учитывая, что существует только конечный набор входов (что, вероятно, не так), вы можете хранить все возможные входы и соответствующие им шаблоны в MongoDB.

Надеюсь, это поможет.

0 голосов
/ 03 ноября 2011

Скорее всего, вам нужно самостоятельно выполнить проверку соответствия и применить ее, используя стиль карты / уменьшения.

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