Descendant Operator

In addition to providing an explicit path to reach the zip field, it may sometimes be useful to reference the zip field without knowing the full path. In such a case, we can use the descendant operator (//) instead of the child operator (/). To reach the same zip field as above, we can accomplish this by simply using the path //zip.

There is a very important distinction, though, between the child operator and the descendant operator: the descendant operator may match many fields, whereas the child operator will match at most one field. To help understand this, consider the following Record:


{
        "name": "John Doe",
        "workAddress": {
                "number": "123",
                "street": "5th Avenue",
                "city": "New York",
                "state": "NY",
                "zip": "10020"
        },
        "homeAddress": {
                "number": "456",
                "street": "116th Avenue",
                "city": "New York",
                "state": "NY",
                "zip": "11697"
        }
}

Now, if we use the RecordPath /workAddress/zip, we will be referencing the zip field that has a value of "10020." The RecordPath /homeAddress/zip will reference the zip field that has a value of "11697." However, the RecordPath //zip will reference both of these fields.