sql >> Base de Datos >  >> NoSQL >> MongoDB

Manera de atravesar profundamente un objeto Groovy con un punto en una cadena usando GPath

Según el error/subproceso, parece que hay algunos problemas de ambigüedad con el soporte de un descriptor de acceso de propiedad con puntos. Según el hilo de la lista de correo, parecería que evaluar la cadena queryField sería su mejor opción:

def result = [a: [b: [c: 42]]]
def queryString = 'a.b.c'

def evalResult = Eval.x(result, 'x.' + queryString)
assert evalResult == 42

Script en Groovy Web Console

El hilo de la lista de correo es un poco antiguo, por lo que hay una clase Eval nueva (desde al menos 1.7.2) que puede ayudar con la ejecución de pequeños fragmentos que no tienen un enlace grande.

De lo contrario, puede dividir la cadena y realizar evaluaciones recursivas de propiedades en el objeto, reproduciendo efectivamente un subconjunto del comportamiento transversal de GPath.