Ce face $currentDate
$currentDate scrie ora curentă a serverului MongoDB în câmpurile date. Cu true sau { $type: 'date' } câmpul primește un Date (afișat ISODate(...) în mongosh); cu { $type: 'timestamp' } primește un Timestamp intern.
Este modul obișnuit de a ține un câmp actualizatLa corect, fără să depinzi de ceasul aplicației. Într-un update cu pipeline (MongoDB 4.2+) poți obține același efect cu variabila '$$NOW'.
Parametri
| Parametru | Descriere |
|---|---|
true |
Setează un Date. |
{ $type: 'date' } |
La fel, scris explicit. |
{ $type: 'timestamp' } |
Setează un Timestamp BSON. |
Ce returnează
Rezultatul obișnuit al unui update.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
use magazin
db.comenzi.insertMany([
{ _id: 1, client: 'Ana', oras: 'Iași', total: 120, status: 'livrata', produse: ['caiet', 'pix'] },
{ _id: 2, client: 'Dan', oras: 'Cluj', total: 85, status: 'noua', produse: ['carte'] },
{ _id: 3, client: 'Ioana', oras: 'Iași', total: 240, status: 'livrata', produse: ['rucsac', 'caiet', 'pix'] },
{ _id: 4, client: 'Mihai', oras: 'Brașov', total: 60, status: 'anulata', produse: [] }
])
Exemplul 1: Marcarea momentului livrării
Statusul și data se schimbă în aceeași operație; data vine de la server.
db.comenzi.findOneAndUpdate(
{ _id: 2 },
{ $set: { status: 'livrata' }, $currentDate: { actualizatLa: true } },
{ returnDocument: 'after', projection: { produse: 0 } }
)
Ieșire în mongosh
{
_id: 2,
client: 'Dan',
oras: 'Cluj',
total: 85,
status: 'livrata',
actualizatLa: ISODate('2026-10-25T09:30:12.345Z')
}
Exemplul 2: Date și Timestamp în același update
ultimaModificare primește tipul Timestamp, folosit mai ales intern (de exemplu la replicare).
db.comenzi.findOneAndUpdate({ _id: 3 }, { $currentDate: { actualizatLa: true, ultimaModificare: { $type: 'timestamp' } } }, { returnDocument: 'after', projection: { client: 1, actualizatLa: 1, ultimaModificare: 1 } })
Ieșire în mongosh
{
_id: 3,
client: 'Ioana',
actualizatLa: ISODate('2026-10-25T09:30:12.345Z'),
ultimaModificare: Timestamp({ t: 1792920612, i: 1 })
}
Greșeli frecvente
- Pentru dată normală folosește tipul Date, nu Timestamp: Timestamp nu se afișează și nu se compară ușor în aplicații.
$currentDatefolosește ora serverului MongoDB (în UTC), nu ora locală a aplicației; mongosh afișează mereu datele în UTC (sufixulZ).
Comenzi înrudite
$min / $max (update): La actualizare, $min scrie valoarea doar dacă e mai mică decât cea existentă, iar $max doar dacă e mai mare.findOneAndUpdate(): Actualizează un document și îl întoarce, atomic, într-un singur pas; există și findOneAndDelete și findOneAndReplace.Index TTL (expireAfterSeconds): Un index TTL șterge automat documentele după un număr de secunde de la data dintr-un câmp; ideal pentru sesiuni și jurnale.
Întrebări & Exemple de Cod:
$currentDateAi o nelămurire despre utilizarea comenzii
$currentDatesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.