You probably want a side table with all the days listed (search for how to create a date dimension on how to create that)
Then you could
create table reservations(dayid int, user varchar(100), lockeduntil datetime)
set lockeduntil = SYSDATE(), user = "Miller"
where dateid = 01012021 and lockeduntil IS NULL
As per ACID's atomicity (sp?) ...
If you put a unique index on reservation-date, that should do it, along with following something along the lines of what follows. As soon as the user starts editing the record and enters a reservation date, you insert a temporary reservation-holder record into MongoDB to prevent others from starting to reserve the same date. If they try to enter a date ...
Be sure to act atomically and keep the update time short
Prepare the migration
Prepare the code modification to the new schema
Migrations should contains new field with default value or null allowances, foresight for column alteration size limit or data casting (eventually dropping it and creating it on a new column as before), delete all the needed columns ...