MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB $datacorrente

In MongoDB, il $currentDate l'operatore imposta il valore di un campo sulla data corrente.

Può essere impostato come Data o un timestamp genere. L'impostazione predefinita è Data .

$currentDate è un aggiornamento operatore e può essere utilizzato solo durante l'aggiornamento dei documenti, non durante l'inserimento degli stessi (sebbene possa essere utilizzato nelle operazioni di inserimento).

Esempio

Supponiamo di avere una collezione chiamata dogs con il seguente documento:

{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : true,
	"dateModified" : ISODate("2020-01-01T00:00:00Z")
}

E vogliamo apportare una modifica al documento. Quando apportiamo la modifica, dobbiamo aggiornare dateModified campo alla data della modifica.

Pertanto, possiamo utilizzare il $currentDate operatore per impostare la data sulla data corrente. Possiamo fare qualcosa del genere:

db.dogs.update( 
  { _id: 1 }, 
  {
    $currentDate: {
      dateModified: true
    },
    $set: {
      goodDog: false
    }
  }
)

Qui utilizziamo dateModified: true per impostare la data utilizzando la Data digita (questo è un modo abbreviato per impostarlo come Data tipo).

Possiamo verificare il risultato guardando di nuovo la collezione/documento:

db.dogs.findOne()

Risultato:

{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : false,
	"dateModified" : ISODate("2021-01-16T04:17:41.206Z")
}

Possiamo vedere che il dateModified il campo è stato aggiornato alla data corrente (ovvero la data/ora in cui ho eseguito l'aggiornamento). Il goodDog anche il campo è stato aggiornato come specificato.

Data e ora

Per impostazione predefinita $currentDate utilizza la Data genere. In alternativa puoi specificare il tipo in un documento. Pertanto, puoi utilizzare {$type: timestamp} in modo che la data venga aggiornata con un timestamp Tipo BSON.

Esempio:

db.dogs.update( 
  { _id: 1 }, 
  {
    $currentDate: {
      dateModified: { $type: "timestamp" }
    },
    $set: {
      goodDog: true
    }
  }
)

In questo caso, abbiamo fornito un documento che specificava il timestamp genere.

Puoi anche utilizzare questo metodo per la Data digitare (o utilizzare il metodo abbreviato come mostrato nell'esempio precedente).

Controlla la collezione:

db.dogs.findOne()

Risultato:

{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : true,
	"dateModified" : Timestamp(1610771023, 1)
}