2013-02-28 67 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