Szybko rozwijamy aplikację, która używa Mongoose, a nasze schematy często się zmieniają. Nie potrafię wymyślić właściwego sposobu aktualizowania schematu dla istniejących dokumentów, bez zdmuchiwania ich i ponownego odtwarzania ich od zera.Zmiana formatu schematu Mangowego
Natknąłem się na http://mongoosejs.com/docs/api.html#schema_Schema-add, który wygląda na prawidłowy. Nie ma prawie żadnej dokumentacji na temat tego, jak właściwie to zaimplementować, co jest bardzo trudne dla kogoś, kto jest nowy w MongoDB.
Po prostu chcę dodać nowe pole o nazwie włączone. Moja definicja schematu to:
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
}
});
* ale zmiany, takie jak nowe pola z wartościami domyślnymi, wpłyną tylko na nowe dokumenty w przyszłości. * - Sądzę, że ma to również wpływ na zaktualizowane dokumenty, prawda? (nie tylko nowy) – Michael
@Michael Nie, nie. Dodanie nowych pól z wartością domyślną sprawi, że te pola pojawią się w mongoose wystąpień istniejących dokumentów, ale w rzeczywistości nie doda to pola do istniejących dokumentów, nawet jeśli wywołasz na nich "zapisz". – JohnnyHK
Zatem zapisanie dokumentu, który poprzednio nie miał pola 'x' po dodaniu' x' do schematu z wartością domyślną, nie aktualizuje dokumentu z 'x'? Nie rozumiem tego wyboru projektu, czy jest to gdzieś udokumentowane? Dzięki – Michael