2013-02-28 2 views
0

У меня возникла проблема с запросом на регулярное выражение с синтаксисом жидкого dsl, я пытаюсь сказать что-то вроде ("id" -> foo) с использованием жидкости. foo - регулярное выражение, поэтому в regex нет элемента $ elemMatch, поэтому я получаю «Неявное представление, доступное из Regex to DBObject».mongodb query regex с синтаксисом жидкости casbah

так, в настоящее время я должен структурировать свой запрос следующим образом:

("someval" $gte 5) ++ ("id" -> foo), я должен положить часть Ид на конце, потому что он не собирается через DSL. Что бы я хотел, это что-то вроде

("id" [WHAT OP HERE?] foo.r) ++ ("someval" $gte 5) 

Как это сделать? Пожалуйста, обратите внимание, что я знаю, как использовать «обычные» («Foo» -> MongoDbObject (... синтаксис, я хотел бы использовать, чтобы сделать DSL то же самое

Благодаря

+0

Обычный вариант' MongoDBObject (. "id" -> foo.r) ++ ("someval" $ gte 5) ', и я не знать проще, если вы хотите id в начале. –

+0

вы можете создать псевдоним, например 'val $ = MongoDBObject', и использовать его как' $ ("foo" -> "bar" .r) ++ ("someval" $ gte 5) ' –

+0

@SergeyPassichenko i do not понять, почему нет $ eq? я думал, что сначала я не нашел его и искал весь код :), существует $ neq с регулярным выражением, так что не имеет смысла делать $ eq с регулярным выражением? возможно, я не понимаю что-то – Alex

ответ

0

Это ISN.! «т только проблема для регулярных выражений, но и для любой жидкости синтаксиса, который делает меру равенства, например:

("name" -> "rozza") ++ ("forum" -> "stackoverflow") 

Это также терпит неудачу, в настоящее время у вас есть, чтобы обернуть в MongoDBObject например

+1

Итак, проблема в том, что («name» -> «rozza») - это кортеж, который ожидает MongoDbObject, но не сам MongoDbObject, в котором работает оператор ++, поэтому ваш пример будет работать, если вы изменили кортежи на MongoDbObjects – Alex

+0

Если это правильный ответ - отметьте его как такового, чтобы помочь другим – Ross

+1

это неправильный ответ, пожалуйста, прочтите мой комментарий – Alex