AGGIORNAMENTO: (5 anni dopo)
Nota: se si decide di utilizzare Kappa Architecture ( Event Sourcing + CQRS ), non è necessario aggiornare la data. Dato che i tuoi dati sono un registro eventi immutabile e solo di append, hai sempre e solo bisogno della data di creazione dell'evento. Simile all'architettura Lambda , descritta di seguito. Quindi lo stato dell'applicazione è una proiezione del registro eventi (dati derivati). Se ricevi un evento successivo sull'entità esistente, utilizzerai la data di creazione dell'evento come data aggiornata per la tua entità. Questa è una pratica comunemente usata (e comunemente fraintesa) nei sistemi di microservizio.
AGGIORNAMENTO: (4 anni dopo)
Se usi ObjectIdcome _idcampo (che di solito è il caso), allora tutto ciò che devi fare è:
let document = {
updatedAt: new Date(),
}
Controlla la mia risposta originale qui sotto su come ottenere il timestamp creato dal _idcampo. Se devi usare gli ID da un sistema esterno, controlla la risposta di Roman Rhrn Nesterov.
AGGIORNAMENTO: (2,5 anni dopo)
Ora puoi usare l' opzione #timestamps con la versione mongoose> = 4.0.
let ItemSchema = new Schema({
name: { type: String, required: true, trim: true }
},
{
timestamps: true
});
Se imposta timestamp, assegnazioni di mangusta createdAte updatedAtcampi al tuo schema, il tipo assegnato è Date.
Puoi anche specificare i nomi dei file di data e ora:
timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }
Nota: se stai lavorando su una grande applicazione con dati critici, dovresti riconsiderare l'aggiornamento dei tuoi documenti. Ti consiglierei di lavorare con dati immutabili, di sola aggiunta ( architettura lambda ). Ciò significa che permetti solo inserti. Aggiornamenti ed eliminazioni non dovrebbero essere consentiti! Se si desidera "eliminare" un record, è possibile inserire facilmente una nuova versione del documento con alcuni timestamp/ version
archiviati e quindi impostare un deletedcampo su true. Allo stesso modo, se si desidera aggiornare un documento, ne si crea uno nuovo con i campi appropriati aggiornati e il resto dei campi copiati. Quindi, per interrogare questo documento, si otterrebbe quello con il timestamp più recente o la versione più alta che è non "cancellato" (ildeleted campo non definito o falso`).
L'immutabilità dei dati garantisce che i tuoi dati siano debuggabili: puoi tracciare la cronologia di ogni documento. Puoi anche ripristinare la versione precedente di un documento se qualcosa va storto. Se vai con una tale architettura ObjectId.getTimestamp()è tutto ciò di cui hai bisogno e non dipende da Mongoose.
RISPOSTA ORIGINALE:
Se si utilizza ObjectId come campo identità non è necessario il created_atcampo. Gli ObjectId hanno un metodo chiamato getTimestamp().
ObjectId ( "507c7f79bcf86cd7994f6c0e"). GetTimestamp ()
Ciò restituirà il seguente output:
Isodate ( "2012-10-15T21: 26: 17Z")
Maggiori informazioni qui Come posso estrarre la data di creazione da un Mongo ObjectID
Per aggiungere l' updated_atarchivio è necessario utilizzare questo:
var ArticleSchema = new Schema({
updated_at: { type: Date }
// rest of the fields go here
});
ArticleSchema.pre('save', function(next) {
this.updated_at = Date.now();
next();
});