Leggi l'operatore posizionale . In questo caso, non hai bisogno di massa, solo UpdateMany.
collection.UpdateMany(
Builders<RootDocument>.Filter.Eq("Documents.Id", document.Id),
Builders<RootDocument>.Update.Set("Documents.$", document));
Questo passerà attraverso la raccolta e corrisponderà a qualsiasi RootDocument che ha un ChildDocument con l'ID specificato e successivamente lo sostituirà con il documento fornito.