set field as empty for mongo object using mongoose

Just delete fields

delete user.first_name;
delete user.signup_date;
user.save();

Does it make a difference if you try the set method instead, like this:

user.set('first_name', null);
user.set('signup_date', null);
user.save();

Or maybe there's an error when saving, what happens if you do:

user.save(function (err) {
    if (err) console.log(err);
});

Does it print anything to the log?


Another option is to define a default value as undefined for these properties.

Something like the following:

let userSchema = new mongoose.Schema({ first_name: { type: String, default: undefined }, signup_date: { type: Date, default: undefined } })


To remove those properties from your existing doc, set them to undefined instead of null before saving the doc:

user.first_name = undefined;
user.signup_date = undefined;

user.save();

Confirmed as still working in Mongoose 5.9.7. Note that the field you're trying to remove must still be defined in your schema for this to work.