is there a way to define a Model in mongoose that does not have the .save() method?

what i'm trying to do is define a Student model with a field called "schedules" which contains an Array of Schedule instances, but i don't want the Schedule model to be able to saved to it's own collection.

Here's some code, it'll make more sense:

var ScheduleSchema = new Schema({
    day:    {type: Number, min: 0, max: 6},
    time:   {type: Number, min: 0, max:24}
});

var StudentSchema = new Schema({
    firstName:  String,
    schedule:   [ScheduleSchema]
});

var Schedule = mongoose.model("Schedule", ScheduleSchema);
var Student = mongoose.model(modelName, StudentSchema);
Student.Schedule = Schedule;

the problem i'm having with this bit of code is that when i do:

var schedule = new Student.Schedule({day: 3, time: 15});

i would get something like this, when i console.log

{ "day" : 3, "time" : 15, "_id" : ObjectId("5019f34924ee03e20900001a") }

i got around the auto generating of _id, by explicitly defining _id in the schema,

var ScheduleSchema = new Schema({
    _id:    ObjectIdSchema,
    day:    {type: Number, min: 0, max: 6},
    time:   {type: Number, min: 0, max:24}
});

now it' just gives me:

{ "day" : 3, "time" : 15}

that's probably a hack..and not something i want to rely on.

the other problem is that if i do

schedule.save()

it'll actually create a collection and save the document to the database.

is there a way to disable save() for Schedule? is there a correct way to do this?

i could probably stick with what i have, or settle for Mixed types but lose out on the validation..

Why would you do schedule.save() anyway? You are supposed to save the parent object (i.e. Student object), not embedded document. If you save schedule then the _id will be appended by default. This won't happen if you save Student object with schedule as an embedded document.

Also there is no real reason for disabling .save method on your Schedule model (this is an interesting feature that allows you to have Schedule model as a model for embedded documents and a model for stand-alone documents at the same time). Just don't use it. Do something like this:

var student = new Student({ firstName: 'John' });
var schedule = new Schedule({ day: 3, time: 15 });
student.schedules.push( schedule );
student.save( );