2012-03-01 53 views
1

我想製作一些帶有休息服務的可翻譯內容,所以我決定用這種結構創建集合。但是我無法從String Map中找到BSON。 class LocalizableString {Grails Gorm MongoDB index嵌入式字符串映射

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%,但我相當肯定的蒙戈格姆插件不與標準的關係遍歷,這就是這個看起來像(儘管實際上不是這樣的)工作。

從mongoGorm網站(http://blog.mongodb.org/post/18510469058/grails-in-the-land-of-mongodb):

一些未支持的功能格姆包括:

條件查詢有關協會

HQL

Groovy的SQL

因此,您可能需要重新考慮您在此處具有的數據模型的地圖結構:/更有經驗的任何人都可以稱重?

+0

Tnx但我用mongo low lvl api on that – XenoN 2012-03-03 06:32:48