sql >> Database teknologi >  >> NoSQL >> MongoDB

Måde at krydse et Groovy objekt dybt med prik i streng ved hjælp af GPath

Baseret på fejlen/tråden ser det ud til, at der er nogle tvetydighedsproblemer med at understøtte en prikket ejendomsadgang. Baseret på postlistetråden ser det ud til, at evaluering af queryField-strengen ville være dit bedste bud:

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

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

Script på Groovy Web Console

Postlistetråden er lidt gammel, så der er en ny-agtig (siden mindst 1.7.2) Eval-klasse, der kan hjælpe med at køre små uddrag, der ikke har en stor binding.

Ellers kan du opdele strengen og rekursivt udføre egenskabsevalueringer på objektet, hvilket effektivt reproducerer en delmængde af GPath-gennemløbsadfærd.




  1. MongoDB til kommerciel brug

  2. Sammenlægning af to samlinger i MongoDB

  3. Latterligt langsom mongoDB-forespørgsel på lille samling i enkel, men stor database

  4. MongoEngine:Tilføjelse af felter til dynamisk dokument