Database

[{"keyA":1,"keyB":{keyC:17,keyD:23,keyE:{keyF:12,keyG:{keyI:3},keyH:{keyJ:4}}}}]

Query

db.collection.aggregate([{$project:{data:"$$ROOT"}},{"$project":{"flattenKeys":{"$function":{"body":"function flatten(dataList, keysToHandle){while(keysToHandle.length){origKeyData = keysToHandle.shift();for (const newKey of Object.keys(origKeyData.objData)){keysToHandle.push({objData:origKeyData.objData[newKey],keyData:`${origKeyData.keyData}.${newKey}`});dataList.push(`${origKeyData.keyData}.${newKey}`);}}return dataList}","args":[[],[{objData:"$data",keyData:"data"}]],"lang":"js"}}}},{$project:{matchingKeys:{$filter:{input:"$flattenKeys",as:"item",cond:{$regexMatch:{input:"$$item",regex:"keyD"}}}}}}])

Result