Stiamo sviluppando rapidamente un'applicazione che utilizza Mongoose e i nostri schemi stanno cambiando spesso. Non riesco a capire il modo corretto di aggiornare uno schema per i documenti esistenti, senza farli esplodere e ricrearli completamente da zero.Mongoose Changing Schema Format
Mi sono imbattuto in http://mongoosejs.com/docs/api.html#schema_Schema-add, che sembra essere giusto. C'è poca o nessuna documentazione su come implementare effettivamente questo, rendendo molto difficile per qualcuno che è nuovo a MongoDB.
Voglio semplicemente aggiungere un nuovo campo chiamato abilitato. La mia definizione dello schema è:
var sweepstakesSchema = new Schema({
client_id: {
type: Schema.Types.ObjectId,
ref: 'Client',
index: true
},
name: {
type: String,
default: 'Sweepstakes',
},
design: {
images: {
type: [],
default: []
},
elements: {
type: [],
default: []
}
},
enabled: {
type: Boolean,
default: false
},
schedule: {
start: {
type: Date,
default: Date.now
},
end: {
type: Date,
default: Date.now
}
},
submissions: {
type: Number,
default: 0
}
});
* ma i cambiamenti come i nuovi campi con valori predefiniti incideranno solo sui nuovi documenti in corso. * - Immagino che influenzi anche i documenti aggiornati giusto? (non solo nuovo) – Michael
@Michael Non proprio, no. L'aggiunta di nuovi campi con un valore predefinito renderà quei campi visualizzati nelle istanze di mangusta dei documenti esistenti, ma in realtà non aggiungerà il campo ai documenti esistenti, anche se si chiama 'save' su di essi. – JohnnyHK
Quindi salvare un documento che in precedenza non aveva il campo 'x' dopo che ho aggiunto' x' allo schema con il valore predefinito non aggiornerà il documento con 'x'? Non capisco questa scelta di design, questo è documentato da qualche parte? Grazie – Michael