Przeczytaj operator pozycyjny . W takim przypadku nie potrzebujesz przesyłania zbiorczego, wystarczy UpdateMany.
collection.UpdateMany(
Builders<RootDocument>.Filter.Eq("Documents.Id", document.Id),
Builders<RootDocument>.Update.Set("Documents.$", document));
Przejdzie to przez kolekcję i dopasuje dowolny RootDocument, który ma dokument ChildDocument o określonym identyfikatorze, a następnie zastąpi go dostarczonym dokumentem.