【问题标题】:Grails Gorm MongoDB index Embedded String MapGrails Gorm MongoDB 索引嵌入式字符串映射
【发布时间】:2012-03-20 07:45:35
【问题描述】:

我想用 rest 服务制作一些可翻译的内容,所以我决定用这种结构创建集合。但我无法从字符串映射中按值找到 BSON。 类 LocalizableString{

   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 实现它

有什么解决办法吗?

【问题讨论】:

    标签: grails mongodb groovy grails-orm


    【解决方案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
       }
     }
    

    【讨论】:

      【解决方案2】:

      对此我不是 100%,但我相当肯定 Mongo GORM 插件确实适用于条件关系遍历,这就是 看起来的样子 (尽管不是真的那样)。

      来自 mongoGorm 网站 (http://blog.mongodb.org/post/18510469058/grails-in-the-land-of-mongodb):

      一些不受支持的 GORM 功能包括:

      关联的条件查询

      HQL

      Groovy SQL

      因此,您可能需要重新考虑此处作为数据模型的 Map 结构:/ 任何更有经验的人都可以参与进来吗?

      【讨论】:

      • Tnx 但我在上面使用了 mongo low lvl api
      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多