sql >> Database >  >> NoSQL >> MongoDB

MongoDB $currentDate

In MongoDB is de $currentDate operator stelt de waarde van een veld in op de huidige datum.

Het kan worden ingesteld als een Datum of een tijdstempel type. De standaard is Datum .

$currentDate is een update operator, en kan alleen worden gebruikt bij het bijwerken van documenten, niet bij het invoegen ervan (hoewel het kan worden gebruikt bij upsert-bewerkingen).

Voorbeeld

Stel dat we een verzameling hebben met de naam dogs met het volgende document:

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

En we willen een wijziging aanbrengen in het document. Wanneer we de wijziging aanbrengen, moeten we de dateModified . bijwerken veld naar de datum van de wijziging.

Daarom kunnen we de $currentDate . gebruiken operator om de datum in te stellen op de huidige datum. We kunnen zoiets als dit doen:

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

Hier gebruiken we dateModified: true om de datum in te stellen met behulp van de Datum type (dit is een verkorte manier om het in te stellen als een Datum type).

We kunnen het resultaat verifiëren door de collectie/het document opnieuw te bekijken:

db.dogs.findOne()

Resultaat:

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

We kunnen zien dat de dateModified veld is bijgewerkt naar de huidige datum (d.w.z. de datum/tijd waarop ik de update heb uitgevoerd). De goodDog veld is ook bijgewerkt zoals gespecificeerd.

Tijdstempels

Standaard $currentDate gebruikt de Datum type. U kunt ook het type in een document specificeren. Daarom kunt u {$type: timestamp} . gebruiken zodat de datum wordt bijgewerkt naar een tijdstempel BSON-type.

Voorbeeld:

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

In dit geval hebben we een document verstrekt waarin de tijdstempel . is gespecificeerd type.

U kunt deze methode ook gebruiken voor de Datum type (of gebruik de verkorte methode zoals in het vorige voorbeeld).

Bekijk de collectie:

db.dogs.findOne()

Resultaat:

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


  1. Behouden arrays die zijn opgeslagen in MongoDB hun volgorde?

  2. Installeer CouchDB op Debian 9

  3. Hoe mangoest findOne te gebruiken

  4. Hoe communiceer je Web- en Worker-dyno's met Node.js op Heroku?