This is not too difficult. Create a scheduled workflow that runs every day. Use the Get items action with a filter query to get the items based on the Next Review Date field. For example, I have a process where I need to send an e-mail 28 days before an End Date. The filter query is:

The first expression in the filter is:
addDays(startOfDay(utcNow()),28,'yyyy-MM-dd')
And the second expression is:
addDays(startOfDay(utcNow()),29,'yyyy-MM-dd')
This will get everything in the list where the end date is in 28 days.
You will then want to add a condition to make sure items were returned so the flow doesn't fail:

The expression used in the condition is:
length(outputs('Get_items_End_Date')?['body/value'])
If items are found for that day, use an Apply to each to send the e-mail to each document owner.