Have a field in each document that's a draft that's set if the document is a draft. Something like:
title:"FooBar blah blah",
draft:true
When the button is clicked to publish the post you only need to update a single document - that post's document to either change draft to false or $unset
it. Your queries which choose which documents to display must be checking for draft:{$ne:true}
- note that this will match both documents which have draft set to false and documents which don't have the field draft
at all. This allows you to leave the current documents alone and not need to update them all to have this field.