синтаксис для передачи запроса регулярного выражения в собственном http-интерфейсе отдыха Монго - PullRequest
0 голосов
/ 30 января 2012

Я бы хотел использовать стандартный интерфейс MongoDB ReST (http://www.mongodb.org/display/DOCS/Http+Interface) для поиска и возврата записей с подстановочным знаком в определенном поле - в данном случае 'link_url'. Например, передача acko для соответствия www.stackoverflow.com и т. Д.

Похоже, что если бы я хотел точное совпадение, я бы использовал

http://127.0.0.1:28017/databaseName/collectionName/?filter_link_url=value

Но я бы хотел передать регулярное выражение, чтобы разрешить частичное совпадение

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

"match" : { "$regex" : "foo", "$options" : "ig" }

Но не повезло. Кто-нибудь может помочь? Мне нужно только найти и в идеале не хотеть запускать другой интерфейс.

Ответы [ 2 ]

4 голосов
/ 17 мая 2014

Я знаю, что это не относится к вашему вопросу как таковому, но я пробовал это на mongolab, и это сработало для меня:

https://api.mongolab.com/api/1/databases/myDBName/collections/categories/?apiKey=myAPIKey&q={"keyname":{"$regex":"^Kampanje$","$options":"i"}}

Это находит все имена ключей, называемые регистром "Kampanje", без учета регистра. Обратите внимание, что URL не может содержать пробелы.

0 голосов
/ 30 января 2012

Похоже, что интерфейс REST (скорее всего, для безопасности), автоматически экранирует пропущенные поля, и что встроенные запросы невозможны. Это означает, что оба метода для передачи в требуемом формате URL, похоже, исключены. Например:

db.collection.find({"url" : /acko.*/i})

Теоретически это будет означать:

http://127.0.0.1:28017/databaseName/collectionName/$cmd/?filter_url=/acko.*/i

К сожалению, это фактически передается как (обратите внимание на кавычки):

{ "url" : "/acko.*/i" }

Есть аналогичные проблемы с другой формой, когда вы передаете команду $ regex как внедренный документ. Эта и другие проблемы являются причиной того, что встроенный интерфейс REST не является рекомендуемым решением для выполнения запросов к mongoDB. Вместо этого вы должны посмотреть на Sleepy Mongoose ) или node.js

Я знаю, что вы не хотели использовать другой интерфейс, но иногда это действительно лучший вариант.

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