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

MongoDB NU Aggregationsvariabel

MongoDB leverer NOW systemvariabel, der giver dig mulighed for at få den aktuelle datetime-værdi, når du bruger en aggregeringspipeline.

Dette kan være nyttigt, når du vil opdatere et dokument med den aktuelle dato og klokkeslæt.

Fra MongoDB 4.2 kan opdateringsmetoder acceptere en aggregeringspipeline. Derfor NOW kan bruges som et alternativ til $currentDate feltopdateringsoperatør til indstilling af den aktuelle dato og klokkeslæt, når du bruger en af ​​opdateringsmetoderne.

For at få adgang til NOW systemvariabel, præfiks den med to dollartegn og omslut den i anførselstegn ("$$NOW" ).

Eksempel

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

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

Her er et eksempel på brug af NOW systemvariabel ved opdatering af det pågældende dokument:

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

Lad os nu tage et kig på dokumentet igen:

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

Resultat:

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

lastModified felt er blevet tilføjet med et Dato-objekt, der indeholder den aktuelle dato og klokkeslæt.

Der er også en CLUSTER_TIME systemvariabel, der returnerer det aktuelle tidsstempel, selvom dette kun er tilgængeligt på replikasæt og sharded clusters.

Bemærk også, at NOW og CLUSTER_TIME værdierne forbliver de samme gennem hele pipelinen.


  1. Gendan fra afbrudt forbindelse i redis pub/sub

  2. Aggregate $lookup returnerer ikke elementernes oprindelige array-rækkefølge

  3. Returner hgetall-listen fra redis i nodejs

  4. Spark på HBase med Spark-skal