Estoy usando Mongoose, MongoDB y Node.
Me gustaría definir un esquema donde uno de sus campos sea una fecha / marca de tiempo.
Me gustaría usar este campo para devolver todos los registros que se han actualizado en los últimos 5 minutos.
Debido al hecho de que en Mongoose no puedo usar el método Timestamp (), entiendo que mi única opción es usar el siguiente método Javascript:
time : { type: Number, default: (new Date()).getTime() }
Probablemente no sea la forma más eficiente de consultar una base de datos enorme. Realmente agradecería si alguien pudiera compartir una forma más eficiente de implementar esto.
¿Hay alguna forma de implementar esto con Mongoose y poder usar una marca de tiempo de MongoDB?

Date.nowlugar deDate.now().Date.nowporqueDate.nowes una función que se ejecutará al crear objetos.Date.now()es la fecha en la quemodels.jsse analizó. Es decir, si usasDate.now()todos tus objetos tendrán la misma fecha, y esa será la fecha en quemodels.jsse analizó.La versión actual de Mongoose (v4.x) tiene marcas de tiempo como una opción incorporada a un esquema:
var mySchema = new mongoose.Schema( {name: String}, {timestamps: true} );Esta opción añade
createdAtyupdatedAtpropiedades que son sellos de tiempo con unaDate, y que hace todo el trabajo por usted. Cada vez que actualiza el documento, actualiza laupdatedAtpropiedad. Documentos de marcas de tiempo de esquema.fuente
timestamps: truelugar de anular los nombres usandotimestamps: {...}.timestamps: true, por lo que es posible que se necesiten algunas consideraciones adicionales en el futuro. (¿Quizás lo están desaprobando? Tienes razón, los documentos no son muy claros para esta opción)En caso de que desee nombres personalizados para su createdAt y updatedAt
const mongoose = require('mongoose'); const { Schema } = mongoose; const schemaOptions = { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' }, }; const mySchema = new Schema({ name: String }, schemaOptions);fuente
var ItemSchema = new Schema({ name : { type: String } }); ItemSchema.set('timestamps', true); // this will add createdAt and updatedAt timestampsDocumentos: https://mongoosejs.com/docs/guide.html#timestamps
fuente
{ timestamps: true }segundo argumentonew Schema({}, {<here>}).Esto significa que debe actualizar la fecha a "ahora" cada vez que guarde el objeto. Tal vez encuentre esto útil: Complemento modificado para crear Moongoose
fuente
Primero :
npm install mongoose-timestampPróximo:
let Timestamps = require('mongoose-timestamp')Próximo:
let MySchema = new SchemaPróximo:
MySchema.plugin(Timestamps)Siguiente :
const Collection = mongoose.model('Collection',MySchema)Entonces puede usar el
Collection.createdAto enCollection.updatedAtcualquier lugar que desee.Creado en: Fecha de la semana Mes Fecha Año 00:00:00 GMT
El tiempo está en este formato.
fuente