MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Maneira de percorrer profundamente um objeto Groovy com ponto na string usando GPath


Com base no bug/thread, parece que existem alguns problemas de ambiguidade com o suporte a um acessador de propriedade pontilhada. Com base no thread da lista de discussão, parece que avaliar a string queryField seria sua melhor aposta:
def result = [a: [b: [c: 42]]]
def queryString = 'a.b.c'

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

Script no Groovy Web Console

O thread da lista de discussão é um pouco antigo, então há uma classe Eval nova (desde pelo menos 1.7.2) que pode ajudar na execução de pequenos trechos que não têm uma ligação grande.

Caso contrário, você pode dividir a string e fazer avaliações de propriedade recursivamente no objeto, reproduzindo efetivamente um subconjunto do comportamento transversal do GPath.