2012-03-01 50 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