However, when the filter contains only one key-value pair, it returns an array of chunks, even though I have many chunks in my database that contain both parent_id, grandparent_id the values in their metadata I’m querying for:
This way you can see directly if the data and metadata are present and correct. If this will work (you get results you are seeking). Then something is wrong with the code you are using. If this will not produce the result, then something is up with the data I would say.
Also I just noticed that your original syntax for the filter should be fine (will add an edit to my previous comment).