I have my Person schema like this :
const schema = new mongoose.Schema({
    _id: Number,
    name: String,
    birthday: Date,
    sex: String
});
schema.pre('findOneAndUpdate', async function (next) {
    try {
        let counter = await Counters.findByIdAndUpdate('person',
            {
                $inc: {
                    value: 1
                }
            },
            { new: true}
        );
        this._update._id = counter.value;
        next();
    }
    catch (err) {
        next(err);
    }
});
The problem is when I try to add some new persons with findOneAndUpdate and upsert: true, it generates a CastError: Cast to ObjectId failed for value "18" at path "person".
My _id is defined as a Number so I don't understand why it's trying to cast it to an ObjectId ?
Update :
I found my problem, the Person model is referenced in some other model but I forgot to change the ref type in the other model...
person: {
    type: Number, //HERE
    ref: 'person',
    required: true
}
 
     
    