Leia o operador posicional . Nesse caso, você não precisa em massa, apenas UpdateMany.
collection.UpdateMany(
Builders<RootDocument>.Filter.Eq("Documents.Id", document.Id),
Builders<RootDocument>.Update.Set("Documents.$", document));
Isso passará pela coleção e corresponderá a qualquer RootDocument que tenha um ChildDocument com o ID especificado e, posteriormente, o substituirá pelo documento fornecido.