Turns out I have to make an extra network call to get the whole document, then do a replace.
I take the existing document and do...
_caseCollection.Update(Query<Case>.EQ(x => x.Id, caseItem.Id), Update.Replace(existingDocument.Merge(caseItem.ToBsonDocument(), true)));
This will retain any fields that the other application is using.