provo a interrogare MongoDB via Casbah per un campo che è una matrice di stringhe con un'espressione regolare.Come eseguire una query su una [stringa] array per una corrispondenza regexp?
Ad esempio:
Ho un Maschine con un elenco di IP, che vengono memorizzati come stringa nei campi ips. Ora voglio cercare tutte le macchine che hanno la subnet 192.168.
Per me sembra che non possa eseguire una query su un array con un'espressione regolare applicata a ogni voce e se una delle voci corrisponde alla macchina viene restituita.
Un modo per fare una richiesta del genere?
- Fisso
Grazie per il vostro aiuto.
Tutto funziona ora. Alla fine ho bisogno di aggirare una limitazione di Casbah, perché avevo bisogno di unirmi alle query con $ o e Casbah si lamenta delle implicite mancanti con le espressioni regolari.
mio codice finale per una query RegExp Array con un altro campo aggiuntivo è:
val regexp = ".*" + parameter + ".*"
val nameQ = MongoDBObject("serverName" -> regexp.r)
val ipsQ = MongoDBObject("ips" -> regexp.r)
val bldr = MongoDBList.newBuilder
bldr += ipsQ
bldr += nameQ
val query = MongoDBObject("$or" -> bldr.result.asDBObject)
val result = find(query)
Non è il codice migliori e la concatenazione di stringa del parametro deve essere risolto. Ma funziona :)
L'ho provato già. $ elemMatch si aspetta che il mio array abbia coppie chiave/valore. Ma ho solo semplici stringhe. – Odo