$currentDate în MongoDB & NoSQL

Operatorul $currentDate pune în câmp data și ora serverului în momentul actualizării, ca Date sau ca Timestamp.

Sintaxă
{ $currentDate: { <camp>: true | { $type: 'date' | 'timestamp' }, ... } }

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.
  • $currentDate folosește ora serverului MongoDB (în UTC), nu ora locală a aplicației; mongosh afișează mereu datele în UTC (sufixul Z).

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.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: $currentDate

Ai o nelămurire despre utilizarea comenzii $currentDate sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.