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)