2011-12-27 14 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']); 

残念ながら、クエリは機能しません。より良いアプローチがありますか?

今、私は特定のタグで会場を取得する方法を知っている:インデックスが使用される場合

どのように発見することができます{「DEF」 、 EQ「タグ」} DEF会場= Venue.withCriteria ?

+1

を?データが実際に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"で始まります。

だからあなたのような何か書くwhould:あなたはgetByTags(複数)を使用して照会する場合はどうなります

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