How to store a custom type (array behind) as string in MongoDB with Rust?

Hi guys,
I’m writing an indexer to sync data from the blockchain and store it in MongoDB
This is my struct

#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct Arena {
    #[serde(rename = "_id", skip_serializing_if = "Option::is_none")]
    pub id: Option<ObjectId>,
    pub arena_id: ObjectID,
    pub token: String,
    pub pool_type: PoolType,
    #[serde(with = "bson::serde_helpers::chrono_datetime_as_bson_datetime")]
    pub created_at: DateTime<Utc>,
    #[serde(with = "bson::serde_helpers::chrono_datetime_as_bson_datetime")]
    pub updated_at: DateTime<Utc>,

Note that the ObjectId is from MongoDB
while the ObjectID is from sui-types, which is what I want to focus on in this question

if setting the arena_id as ObjectID and persisting into MongoDB, it will be stored as an array like in the image below:

How can I keep the arena_id as ObjectID, which is stored as a string type when persisting in MongoDB?

I know I have to do something with the serde library, but both ObjectID and serde::Serialize trait are outside of my crate, so I can not do impl Serialize for ObjectID