MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Manière de parcourir en profondeur un objet Groovy avec un point dans la chaîne en utilisant GPath

Sur la base du bogue/thread, il semblerait qu'il y ait des problèmes d'ambiguïté avec la prise en charge d'un accesseur de propriété en pointillé. D'après le fil de discussion de la liste de diffusion, il semblerait que l'évaluation de la chaîne queryField serait votre meilleur pari :

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

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

Script sur la console Web Groovy

Le fil de la liste de diffusion est un peu ancien, il existe donc une nouvelle classe Eval (depuis au moins 1.7.2) qui peut aider à exécuter de petits extraits qui n'ont pas une grande liaison.

Sinon, vous pouvez diviser la chaîne et effectuer de manière récursive des évaluations de propriétés sur l'objet, reproduisant ainsi un sous-ensemble du comportement de traversée GPath.