2013-02-28 64 views
0

我遇到了用流体dsl语法查询正则表达式的问题,我正在尝试使用流体来说类似于("id" -> foo)的内容。 foo是一个正则表达式,所以在正则表达式上没有$ elemMatch,所以我得到了“没有从Regex到DBObject的隐式视图”。mongodb用casbah流体语法查询正则表达式

所以,目前我要组织我的查询以下列方式:

("someval" $gte 5) ++ ("id" -> foo),我必须把ID部分的结束,因为它没有通过DSL去。我想要的是类似

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

我该如何做到这一点? 请注意,我知道如何使用“常规”(“富” - > MongoDbObject(...语法,我想用DSL做同样的事情

感谢

+0

定期变种'MongoDBObject(。 “id” - > foo.r)++(“someval”$ gte 5)''我不知道如果你想在开始时使用id,就会更简单。 – 2013-02-28 19:37:37

+0

您可以创建别名,例如'val $ = MongoDBObject'并将其用作'$(“foo” - >“bar”.r)++(“someval”$ gte 5)' – 2013-02-28 19:52:01

+0

@SergeyPassichenko我不会理解为什么没有$ eq?我想起初我没有找到它,并通过所有代码搜索:),有一个正则表达式$ neq,所以用正则表达式来做$ eq没有意义吗?也许我不了解的东西 – Alex 2013-02-28 20:20:08

回答

0

这ISN! “T只为正则表达式,但任何流体语法,做一个平等的措施如一个问题:

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

这也失败了,现在你有一个MongoDBObject实例来包装

+1

所以,问题在于(“name” - >“rozza”)是MongoDbObject期望的元组,但不是运算符所在的MongoDbObject本身,所以如果将元组更改为MongoDbObjects – Alex 2013-03-04 18:54:32

+0

如果这是正确答案 - 请标记为帮助其他人 – Ross 2013-03-27 13:43:34

+1

这不是正确的答案,请阅读我的评论 – Alex 2013-03-27 18:37:45