MongoDB регулярное выражение - PullRequest
2 голосов
/ 13 марта 2012

У меня есть коллекция с кучей документов.Я хочу найти в большом строковом объекте (неформатированный ключ / значение) и извлечь из него данные.

Можно ли использовать что-то вроде этого:

db.apps.find({config: '/\n\n(.*) = (.*)\n\n?/'})

, чтобы извлечь эти парызначений?

Я пытаюсь сделать это с помощью php, но работает очень медленно.

Как мне найти чистый способ решить эту проблему?

1 Ответ

2 голосов
/ 14 марта 2012

Если я правильно понимаю ваш вопрос, к сожалению, mongo, вероятно, не сможет выполнить этот запрос быстро. Команда "find" найдет только те документы, в которых значение "config" соответствует этому регулярному выражению, но этот запрос может быть медленным. Даже если у вас есть индекс в поле «config», индекс может использоваться только для соответствия фиксированному префиксу регулярного выражения (см. Здесь: http://www.mongodb.org/display/DOCS/Advanced+Queries).

Что касается извлечения данных из строки, вам придется сделать это в коде приложения после выполнения запроса.

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

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