2013-02-28 4 views
0

fluid dsl 구문을 사용하여 정규식을 사용하여 쿼리하는 데 문제가 있습니다. 유체를 사용하여 ("id" -> foo)과 같은 말을하려고합니다. foo는 정규식이므로 정규식에 $ elemMatch가 없으므로 "암묵적인 뷰를 Regex에서 DBObject로 사용할 수 없습니다"라는 메시지가 나타납니다.mongodb casbah 유체 구문을 사용하여 정규식을 쿼리하는 중

그래서, 현재 나는 다음과 같은 방법으로 내 쿼리를 구성 할 수 있습니다

("someval" $gte 5) ++ ("id" -> foo)

, 나는 그것이 DSL을 통해 않을 있기 때문에 마지막에 ID 부분을 넣어해야합니다. 내가 원하는 것은

("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 왜 $ eq가 없는지 이해 하시겠습니까? 나는 처음에는 그것을 찾지 못했고, 모든 코드를 검색했다. :) $ neq가 정규식과 함께있다. 그래서 정규식으로 $ eq를하는 것이 합리적이지 않습니까? 어쩌면 내가 뭔가 이해하지 오전 – Alex

답변

0

이 ISN.! 정규 표현식하지만 평등 측정 예를 들면 않는 유체 구문 't 단지 문제 :이 또한 실패

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

을 현재 당신은 MongoDBObject 인스턴스에서 포장해야

+1

그래서 문제는 MongoDbObject가 기대하는 튜플이지만 실제로 ++ 연산자가있는 MongoDbObject 자체가 아니라는 것이 문제입니다. 따라서 튜플을 MongoDbObjects로 변경하면 예제가 작동합니다 ("name"-> "rozza"). – Alex

+0

이것이 정답 인 경우 다른 사람을 돕기 위해 표시하십시오. – Ross

+1

정답이 아니므로 제 의견을 읽어주십시오. – Alex