如何使用映射的超类更改Doctrine ODM中的引用?

I am using an abstract base class "BaseUser" and two classes "Admin" and "User". Now a user should become an admin.

Simply changing the discriminator field works, but there are a lot of references in other collections asuming this document to be an "user". Thus there the "admin" is not found => NotFoundException

Is there a simple solution to switch the class from user to admin and update all references?

BaseUser

 /**
 * @ODM\Document
 * @ODM\InheritanceType("SINGLE_COLLECTION")
 * @ODM\DiscriminatorField("type")
 * @ODM\DiscriminatorMap({"admin"="Admin", "user"="User"})
 * @ODM\MappedSuperclass
 */
abstract class BaseUser { ... }

Admin

/**
 * @ODM\Document
 */
class Admin extends BaseUser {...}

User

/**
 * @ODM\Document
 */
class User extends BaseUser {...}

Example User Document:

/* User */
{
    "_id" : ObjectId("123456789123456789"),
    "name" : "John",
    "type" : "user" //changed this to 'admin'
}

References in another document (for example BlogPost)

/** BlogPost */
{
    "_id" : ObjectId("abc123456789"),       
    "headline" : "my first post",
    "text" : "lorem ipsum",
    "author" : {
        "$ref" : "BaseUser",
        "$id" : ObjectId("123456789123456789"),
        "type" : "user" //want this to be updated to 'admin' automatically
    }
}

What did i try?

Change the field "type" in the user document from value 'user' to 'admin'

=> Of course The reference "author" in BlogPost did not work anymore.

I could update all BlogPosts by hand, but this seems very error prone to me. Isn't there a better solution to transform this user?

(The code above is as simple as possible. In reality there are no such simple things as blog posts, but hundrets of different document classes referring to my user/admin class. So manually updating seems really hard)