I understand why that can be confusion, but

```
{
  "obj": { "f": 1, "b": 2 }
}
```

should return `{ "obj": { "b": 2 } }`.

At filter time, we don't know the possible fields in the object, so unless all are excluded (`obj.*`) or the filter rejects everything from within the object (`obj.f1` on `{ "obj": { "f": 1 } }`) I think it makes sense to leave the object intact.  I am open to discussing this further, I just think that it is better to err on the side of leaving an object behind rather than aggressively removing them.