2012-03-01 22 views
1

私はこの構造でコレクションを作成することに決めたので、残りのサービスで翻訳可能なコンテンツを作りたかったのです。しかし、私は文字列マップから値でBSONを見つけることができません。 クラスLocalizableString {Grails Gorm MongoDBインデックス埋め込み文字列マップ

static mapWith = "mongo" 
    ObjectId id 
    Map<String, String> values = new HashMap<String, String>(); 
} 

私はこのようにしたいと思っていました。しかし、それは結合クエリのように機能します。

def list = LocalizableString.createCriteria().list { 
     values{ like('value',"%${value}%") } 
    } 

これは、単純なmongoの例です。しかし、どのように私はgorm mongoDBで実装することができますhttp://www.mongodb.org/display/DOCS/Schema+Design#SchemaDesign-Example

それには解決策はありますか?

答えて

1
class BaseService { 

    def findByLocalizableString(def domainClass ,def query , def field ,def params = null) { 

     def q = new BasicDBObject() 
     def queryList = [] 
     def allowedLanguages = ConfigurationHolder.config.grails.localizableString.allowedLanguages 
     allowedLanguages.each { locale -> 
      queryList.add(new BasicDBObject("values.${locale}", new BasicDBObject('$regex', /.*${query}.*/))) 
    } 
     q.put('$or',queryList) 
     def lsc = LocalizableString.collection.find(q) 

     def list = lsc.hasNext() ? domainClass.createCriteria().list(params) { 
      or { 
       while (lsc.hasNext()) { 
        def n = lsc.next() 
        eq("${field}",n._id) 
       } 
      } 
     } : null 
     return list 
    } 
} 
0

私はこの上で100%ではないんだけど、私はモンゴGORMプラグインは、このが(実際にそのようにされていないにも関わらず)のように見えるものである基準関係トラバーサル、とない作業を行いますかなり確信しています。 mongoGormのウェブサイト(http://blog.mongodb.org/post/18510469058/grails-in-the-land-of-mongodb)から

サポートされていないGORMの機能の一部含める:団体の

基準クエリ

HQL

GroovyのSQL

ここでデータモデルとして持っているマップ構造を再考する必要があるかもしれません:/経験が豊富な人は誰ですか?

+0

Tnxしかし、私はそれにmongo low lvl apiを使用しました – XenoN

関連する問題