Saltar al contenido

convertir la fecha iso en la marca de tiempo en la consulta mongo

Solución:

Mongodb 4.0 ha introducido $toLong agregación que convierte la fecha en marca de tiempo

db.collection.aggregate([
  { "$project": {
    "createdAt": {
      "$toLong": "$createdAt"
    }
  }}
])

Puedes probarlo aqui

Usar $subtract operador de agregación aritmética con tu fecha como minuendo y new Date("1970-01-01") como restar.

db.collection.aggregate(
  {
    $project: { "timestamp": { $subtract: [ "$createdAt", new Date("1970-01-01") ] } } 
  }
);

Por documento

{ "_id": 1, "createdAt": ISODate("2016-09-01T14:35:14.952Z") }

el resultado es

{ "_id": 1, "timestamp": NumberLong("1472740514952") }

Si desea agrupar tanto por marca de tiempo como (año, mes, fecha), puede dividir la marca de tiempo por la cantidad de milisegundos en un día, de modo que sea única para cada día (y no para cada milisegundo)

db.collection.aggregate(
  {
    $project: 
      {
        "timestampByDay":
          {
            $floor: 
              {
                $divide: 
                  [ 
                    { $subtract: [ "$createdAt", new Date("1970-01-01") ] }, 
                    24 * 60 * 60 * 1000 
                  ] 
              }
          },
        "date": "$createdAt"
      }
  },
  {
    $group:
      {
        "_id": "$timestampByDay",
        "date": { $first: "$date" }
      }
  }
);

Si desea actualizar la marca de tiempo. con la fecha y hora actuales, utilice la siguiente consulta.

db.getCollection('movie').update(
{"applicationId":"2b5958d9629026491c30b42f2d5256fa8","type":"shortcut"},
{$set : {userName:"[email protected]",created_at: NumberLong(new Date()),"updated_at":NumberLong(new Date()),"docIndex":UUID()}}, {multi:true, upsert: false}
)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *