Cómo crear un campo de fecha con el valor predeterminado,el valor por defecto debería ser marcas de hora actual cuando la inserción sucedió en la colección.

¿Está utilizando el controlador? lenguaje de programación?
Estamos recibiendo los datos .Los servicios de la red ..pero de que parte es la que no tiene acceso . Hay alguna forma de crear campo en Mongo misma instalación.
¿Cómo estás insertando el documento? ¿estás usando el mongodb-csharp conductor o el shell?
Por favor aprobar la respuesta que encontró útil. 🙂

OriginalEl autor Jagadeesan G | 2016-04-11

8 Comentarios

  1. 9

    Eso es bastante simple!
    Cuando usted está utilizando la Mangosta por ejemplo, usted puede pasar funciones como valor predeterminado.
    Mangosta, a continuación, llama a la función para cada inserción.

    Por lo que en su Esquema puede hacer algo similar a:

     {
       timestamp: { type: Date, default: Date.now},
       ...
     }

    Recuerde que sólo pase el objeto de la función en sí Date.now y no el valor de la llamada a la función Date.now()ya que esto sólo fijar la Fecha de una vez el valor de cuando el Esquema se creó.

    Esta solución se aplica a la Mangosta & Node.Js y espero que ese sea tu caso de uso porque no especificar con más precisión.

    OriginalEl autor Joschua Schneider

  2. 3

    Sólo tendría que hacer esto mientras que la inserción de… para la actual timestamp.

    collection.insert({ "date": datetime.now() } 
    Gracias thalaiva.. Esta consulta podemos manejar para que se ejecute cada inserción a través de consulta estoy de acuerdo en que.Es allí cualquier manera de manejar esto de la fecha y hora de inserción a través de configurar como RDBMS concepto de la siguiente consulta @columnName datetime default CURRENT_TIMESTAMP
    usted tendría mangosta si usted va con un esquema de… mongodb es como tal schemaless. mongoosejs.com/docs/2.7.x/docs/schematypes.html

    OriginalEl autor Thalaivar

  3. 3

    Uso _id para obtener el timestamp.

    Para este propósito en particular que usted realmente no necesita para crear una explícita de campo para guardar las marcas de tiempo. El id del objeto es decir,"_id", que mongo crea por defecto pueden ser utilizados para servir el propósito por lo tanto, el ahorro de un adicional de espacio redundante. Estoy asumiendo que usted está utilizando node.js así que usted puede hacer algo como lo siguiente para obtener el tiempo de documento en particular la creación:

    let ObjectId = require('mongodb').ObjectID
    let id = new ObjectId(<Your document _id>)
    console.log(id.getTimestamp())

    Y, si usted está usando algo como la mangosta, hacerlo así:

    let mongoose = require('mongoose')
    let id = mongoose.Types.ObjectId(<Your document _id>)
    console.log(id.getTimestamp())

    Leer más acerca de «_id» aquí.

    OriginalEl autor UtkarshPramodGupta

  4. 1

    Sólo quiero señalar que en caso de que usted desea que la marca de tiempo para ser almacenada en forma de un entero en lugar de un formato de fecha, usted puede hacer esto:

     {
       timestamp: { type: Number, default: Date.now},
       ...
     }

    OriginalEl autor Chong Lip Phang

  5. 1

    Este es un comando que no se establece un valor predeterminado, sino que se inserta un objeto con la marca de tiempo actual:

    db.foo.insert({date: new ISODate()});

    Estos tienen el mismo efecto:

    db.foo.insert({date: ISODate()});
    db.foo.insert({date: new Date()});

    Ser conscientes de que Date() sin new sería diferente – no devolver un ISODate objeto, sino una cadena.

    También, que estos utilizan el cliente de que el tiempo, no la hora del servidor, que puede ser diferente (ya que el ajuste de la hora nunca es 100% exacto).

    OriginalEl autor jcsahnwaldt

  6. 0

    Gracias amigos ..
    He encontrado otra manera de obtener la fecha y hora en campo _id. objectid.método de gettimestamp() a partir de esto podemos obtener el sello de tiempo.

    OriginalEl autor Jagadeesan G

  7. 0

    Esto es un poco viejo, sin embargo, tengo la fuente cuando se utiliza la Fecha.ahora() método, no obtener la fecha actual y la hora, se queda estancado en el tiempo en que comenzó con el nodo de proceso que se ejecuta. Por lo tanto, todas las marcas de tiempo será de pago a la Fecha.ahora() de cuando inició su servidor.
    Una manera en que yo trabajaba todo esto era para hacer lo siguiente:

    ExampleSchema.pre('save', function (next) {
        const instanceOfSchema = this;
        if(!instanceOfSchema.created_at){
          instanceOfSchema.created_at = Date.now();
        }
        instanceOfSchema.updated_at = Date.now();
        next();
    })

    OriginalEl autor J.Wolfe

  8. 0

    Al Crear el Documento, marcas de tiempo es una de las pocas opciones configurables que se pueden pasar al constructor o establecer directamente.

    const exampleSchema = new Schema({...}, { timestamps: true });

    Después de eso, la mangosta asigna createdAt y updatedAt campos a su esquema, el tipo asignado es la Fecha.

    OriginalEl autor sultan aslam

Dejar respuesta

Please enter your comment!
Please enter your name here