sql >> Database >  >> NoSQL >> MongoDB

MongoDB NOW Aggregatievariabele

MongoDB biedt de NOW systeemvariabele waarmee u de huidige datetime-waarde kunt krijgen bij gebruik van een aggregatiepijplijn.

Dit kan handig zijn als u een document wilt bijwerken met de huidige datum/tijd.

Vanaf MongoDB 4.2 kunnen updatemethoden een aggregatiepijplijn accepteren. Daarom, NOW kan worden gebruikt als alternatief voor de $currentDate field update-operator voor het instellen van de huidige datetime bij gebruik van een van de updatemethoden.

Om toegang te krijgen tot de NOW systeemvariabele, voeg er twee dollartekens aan toe en plaats deze tussen aanhalingstekens ("$$NOW" ).

Voorbeeld

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

{ "_id" : 1, "name" : "Fetch", "weight" : 25 }

Hier is een voorbeeld van het gebruik van de NOW systeemvariabele bij het bijwerken van dat document:

db.dogs.updateOne(
  { _id : 1 },
  [
    { $set : { weight : 30, lastModified : "$$NOW" } }
  ]
)

Laten we nu nog eens naar het document kijken:

db.dogs.find( { _id: 1 } ).pretty()

Resultaat:

{
	"_id" : 1,
	"name" : "Fetch",
	"weight" : 30,
	"lastModified" : ISODate("2021-01-27T01:29:32.833Z")
}

De lastModified veld is toegevoegd met een Date-object dat de huidige datum en tijd bevat.

Er is ook een CLUSTER_TIME systeemvariabele die de huidige tijdstempel retourneert, hoewel deze alleen beschikbaar is op replicasets en shard-clusters.

Merk ook op dat de NOW en CLUSTER_TIME waarden blijven gedurende de hele pijplijn hetzelfde.


  1. MongoDB:update elk document op één veld

  2. Hoe documenten te verwijderen door efficiënt te zoeken in Mongo?

  3. ECONNREFUSED-fout bij het verbinden met mongodb vanaf node.js

  4. Hoe kan ik een regex-variabele gebruiken in een query voor MongoDB?