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

MongoDB $currentDate

I MongoDB er $currentDate operator indstiller værdien af ​​et felt til den aktuelle dato.

Den kan indstilles som enten en Dato eller et tidsstempel type. Standard er Dato .

$currentDate er en opdatering operatør, og kan kun bruges ved opdatering af dokumenter, ikke ved indsættelse af dem (selvom det kan bruges i upsert-operationer).

Eksempel

Antag, at vi har en samling kaldet dogs med følgende dokument:

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

Og vi ønsker at lave en ændring i dokumentet. Når vi foretager ændringen, skal vi opdatere dateModified felt til datoen for ændringen.

Derfor kan vi bruge $currentDate operatør for at indstille datoen til den aktuelle dato. Vi kan gøre sådan noget:

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

Her bruger vi dateModified: true for at indstille datoen ved hjælp af Dato type (dette er en kortfattet måde at indstille det som en dato type).

Vi kan verificere resultatet ved at se på samlingen/dokumentet igen:

db.dogs.findOne()

Resultat:

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

Vi kan se, at dateModified feltet er blevet opdateret til den aktuelle dato (dvs. den dato/tid, hvor jeg kørte opdateringen). goodDog feltet er også blevet opdateret som angivet.

Tidsstempler

Som standard $currentDate bruger datoen type. Du kan alternativt angive typen i et dokument. Derfor kan du bruge {$type: timestamp} så datoen opdateres til et tidsstempel BSON-type.

Eksempel:

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

I dette tilfælde leverede vi et dokument, der specificerede tidsstemplet type.

Du kan også bruge denne metode til datoen type (eller brug stenografimetoden som set i det foregående eksempel).

Tjek samlingen:

db.dogs.findOne()

Resultat:

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


  1. Mongodb, find om en samling er tom, node.js

  2. få mongodb _id objekt efter upsert med php

  3. Laravel - Slet alle cache / redis nøgler, der indeholder en specifik streng

  4. Hvordan konfigureres Redis-forbindelser med Rails 4, Puma og Sidekiq?