Mention nested queries

This commit is contained in:
tidwall 2019-07-12 06:46:38 -07:00
parent 1e964df7d9
commit dea71f728d
2 changed files with 13 additions and 8 deletions

View File

@ -71,9 +71,9 @@ The dot and wildcard characters can be escaped with '\\'.
"children": ["Sara","Alex","Jack"], "children": ["Sara","Alex","Jack"],
"fav.movie": "Deer Hunter", "fav.movie": "Deer Hunter",
"friends": [ "friends": [
{"first": "Dale", "last": "Murphy", "age": 44}, {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68}, {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47} {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
] ]
} }
``` ```
@ -95,13 +95,13 @@ matches with `#(...)#`. Queries support the `==`, `!=`, `<`, `<=`, `>`, `>=`
comparison operators and the simple pattern matching `%` (like) and `!%` comparison operators and the simple pattern matching `%` (like) and `!%`
(not like) operators. (not like) operators.
``` ```
friends.#(last=="Murphy").first >> "Dale" friends.#(last=="Murphy").first >> "Dale"
friends.#(last=="Murphy")#.first >> ["Dale","Jane"] friends.#(last=="Murphy")#.first >> ["Dale","Jane"]
friends.#(age>45)#.last >> ["Craig","Murphy"] friends.#(age>45)#.last >> ["Craig","Murphy"]
friends.#(first%"D*").last >> "Murphy" friends.#(first%"D*").last >> "Murphy"
friends.#(first!%"D*").last >> "Craig" friends.#(first!%"D*").last >> "Craig"
friends.#(nets.#(=="fb"))#.first >> ["Dale","Roger"]
``` ```
*Please note that prior to v1.3.0, queries used the `#[...]` brackets. This was *Please note that prior to v1.3.0, queries used the `#[...]` brackets. This was

View File

@ -34,9 +34,9 @@ Given this JSON
"children": ["Sara","Alex","Jack"], "children": ["Sara","Alex","Jack"],
"fav.movie": "Deer Hunter", "fav.movie": "Deer Hunter",
"friends": [ "friends": [
{"first": "Dale", "last": "Murphy", "age": 44}, {"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68}, {"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47} {"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
] ]
} }
``` ```
@ -76,7 +76,6 @@ Special purpose characters, such as `.`, `*`, and `?` can be escaped with `\`.
fav\.movie "Deer Hunter" fav\.movie "Deer Hunter"
``` ```
### Arrays ### Arrays
The `#` character allows for digging into JSON Arrays. The `#` character allows for digging into JSON Arrays.
@ -109,6 +108,12 @@ children.#(!%"*a*") "Alex"
children.#(%"*a*")# ["Sara","Jack"] children.#(%"*a*")# ["Sara","Jack"]
``` ```
Nested queries are allowed.
```go
friends.#(nets.#(=="fb"))#.first >> ["Dale","Roger"]
```
*Please note that prior to v1.3.0, queries used the `#[...]` brackets. This was *Please note that prior to v1.3.0, queries used the `#[...]` brackets. This was
changed in v1.3.0 as to avoid confusion with the new [multipath](#multipaths) changed in v1.3.0 as to avoid confusion with the new [multipath](#multipaths)
syntax. For backwards compatibility, `#[...]` will continue to work until the syntax. For backwards compatibility, `#[...]` will continue to work until the