> For the complete documentation index, see [llms.txt](https://mikefarah.gitbook.io/yq/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mikefarah.gitbook.io/yq/operators/parent.md).

# Parent

Parent simply returns the parent nodes of the matching nodes.

## Simple example

Given a sample.yml file of:

```yaml
a:
  nested: cat
```

then

```bash
yq '.a.nested | parent' sample.yml
```

will output

```yaml
nested: cat
```

## Parent of nested matches

Given a sample.yml file of:

```yaml
a:
  fruit: apple
  name: bob
b:
  fruit: banana
  name: sam
```

then

```bash
yq '.. | select(. == "banana") | parent' sample.yml
```

will output

```yaml
fruit: banana
name: sam
```

## Get parent attribute

Given a sample.yml file of:

```yaml
a:
  fruit: apple
  name: bob
b:
  fruit: banana
  name: sam
```

then

```bash
yq '.. | select(. == "banana") | parent.name' sample.yml
```

will output

```yaml
sam
```

## Get parents

Match all parents

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | parents' sample.yml
```

will output

```yaml
- c: cat
- b:
    c: cat
- a:
    b:
      c: cat
```

## Get the top (root) parent

Use negative numbers to get the top parents. You can think of this as indexing into the 'parents' array above

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | parent(-1)' sample.yml
```

will output

```yaml
a:
  b:
    c: cat
```

## Root

Alias for parent(-1), returns the top level parent. This is usually the document node.

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | root' sample.yml
```

will output

```yaml
a:
  b:
    c: cat
```

## N-th parent

You can optionally supply the number of levels to go up for the parent, the default being 1.

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | parent(2)' sample.yml
```

will output

```yaml
b:
  c: cat
```

## N-th parent - another level

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | parent(3)' sample.yml
```

will output

```yaml
a:
  b:
    c: cat
```

## N-th negative

Similarly, use negative numbers to index backwards from the parents array

Given a sample.yml file of:

```yaml
a:
  b:
    c: cat
```

then

```bash
yq '.a.b.c | parent(-2)' sample.yml
```

will output

```yaml
b:
  c: cat
```

## No parent

Given a sample.yml file of:

```yaml
{}
```

then

```bash
yq 'parent' sample.yml
```

will output

```yaml
```
