2011-12-27 3 views
1

내가 MongoDB의 새로운 그리고 난 질문 다음이가 :Grails의 MongoDB를 지수 포함 된 문자열 목록

class Venue { 

String name 
List<String> tags 

    static mapWith = "mongo" 

static mapping = { 
    tags index:true  
} 


new Venue(name: 'Test1', tags:['abc', 'def']).save() 
new Venue(name: 'Test2', tags:['abc', 'ghi']).save() 

는 이제 특정 태그와 개최지에 대한 쿼리를 싶어요.

def venues = Venue.getByTag(['def']); 

불행히도 쿼리가 작동하지 않습니다. 더 나은 접근 방법이 있습니까? 데프 장소 = Venue.withCriteria

어떻게 발견 할 수 있습니다 { 이 EQ '태그', 'DEF'} 인덱스가 사용되는 경우 :

는 이제 특정 태그와 장소를 얻는 방법을 알고 ?

+1

:

그래서 당신은 뭔가를 쓰기 whould? 데이터가 실제로 쉘에서 쿼리하여 Mongo에 있는지 확인 했습니까? – Ryan

+0

다음 예외가 발생합니다 : groovy.lang.MissingMethodException : 메소드의 서명이 없습니다. com.foo.Venue.getByTag()는 인수 유형에 해당합니다. (java.util.ArrayList) values ​​: [[def]] Possible 솔루션 : getTags(), setTags (java.util.List) 메시지 : groovy.lang.MissingMethodException : 메소드의 서명이 없습니다. com.foo.Venue.getByTag()는 인수 유형에 적용 가능합니다. (java.util.ArrayList) 값 : [[def]] 가능한 해결책 : getTags(), setTags (java.util.List) 태그를 색인화 할 수 있고 도메인을 만들 필요가없는 경우 MongoDB를 사용하면 큰 이점이 될 것이라고 생각합니다. Obj. 태그 컬렉션입니다. – user1117605

+0

나는 GORM을 정말로 모르지만이 문서를 읽었을 것으로 추측하고 있습니까? http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html MongoDB는 여러분이하려는 일을 분명히 지원합니다. GORM 역시 그렇게한다고 가정합니다. 구문을 찾는 것만으로도 충분합니다. – Ryan

답변

1

Dynamic finders "get"이 아닌 "find"로 시작하십시오. 당신이 getByTags을 (복수)를 사용하여 쿼리 할 경우 어떻게됩니까

def venues = Venue.findAllByTag("def");