2012-03-01 5 views
1

Je voulais créer du contenu traduisible avec un service de repos, j'ai donc décidé de créer une collection avec cette structure. Mais je ne peux pas trouver BSON en valeur de String Map. classe LocalizableString {Grails Gorm Index MongoDB Embedded String Map

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

Alors je voulais obtenir comme ça. Mais cela fonctionne comme une requête de jointure.

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

Voici un exemple similaire de mongo simple. Mais comment puis-je l'implémenter avec gorm mongoDB http://www.mongodb.org/display/DOCS/Schema+Design#SchemaDesign-Example

Y at-il une solution pour cela?

Répondre

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

Je ne suis pas 100% à ce sujet, mais je suis assez certain que le plug-in ne Mongo GORM pas travail par rapport à des critères traversal, qui est ce que ce ressemble (en dépit d'être pas vraiment comme ça).

De site mongoGorm (http://blog.mongodb.org/post/18510469058/grails-in-the-land-of-mongodb):

Certaines des caractéristiques de GORM qui ne sont pas prises en charge comprennent:

requêtes Critères sur les associations

HQL

Groovy SQL

Vous devrez peut-être repenser la structure de la carte que vous avez en tant que modèle de données ici:/Quelqu'un de plus expérimenté peut-il intervenir?

+0

Tnx mais j'ai utilisé mongo low lvl api sur ce – XenoN