I MongoDB, Date()
metod returnerar ett datum antingen som en sträng eller som ett Date-objekt.
- När du kallar det som
Date()
, returnerar det aktuella datumet som en sträng imongo
skal. - När du kallar det som
new Date()
, returnerar det det aktuella datumet som ett Date-objekt.
Du kan också ange ett specifikt datum som argument till new Date()
, så att den använder det datumet.
Exempel – Date()
Här är ett exempel på att infoga ett dokument i en samling och använda Date()
som värde för ett av fälten:
db.dogs.insert(
{
"_id" : 1,
"name" : "Fetch",
"lastModified" : Date()
}
)
Efter att ha kört den koden kan vi ta en titt på det resulterande dokumentet:
db.dogs.find().pretty()
Resultat:
{ "_id" : 1, "name" : "Fetch", "lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)" }
Vi kan se att lastModified
datumfältet använder en datumsträng som värde.
Exempel – new Date()
Som nämnts, om du vill returnera ett datumobjekt istället för en datumsträng, använd new Date()
.
Exempel:
db.dogs.insert(
{
"_id" : 2,
"name" : "Wag",
"lastModified" : new Date()
}
)
Helt enkelt föregå Date()
med new
resulterar i ett Date-objekt snarare än en datumsträng.
Låt oss nu kontrollera insamlingen av dokument igen:
db.dogs.find().pretty()
Resultat:
{
"_id" : 1,
"name" : "Fetch",
"lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)"
}
{
"_id" : 2,
"name" : "Wag",
"lastModified" : ISODate("2021-01-27T00:19:08.862Z")
}
Vi kan se att datumet i det andra dokumentet har raderats med ISODate()
hjälpare. ISODate är i UTC.
Ange ett specifikt datum
Du kan ange ditt eget datum när du ringer Date()
metod.
För att göra detta, skicka en ISO-8601-datumsträng med ett år inom intervallet 0
till 9999
till new Date()
konstruktor eller ISODate()
fungera.
Här är ett exempel.
db.dogs.update(
{ "_id" : 1 },
{ $set : { "born" : new Date( "2020-10-07" ) } }
)
Låt oss nu kontrollera dokumentet:
db.dogs.find( { "_id": 1 } ).pretty()
Resultat:
{ "_id" : 1, "name" : "Fetch", "lastModified" : "Wed Jan 27 2021 10:15:53 GMT+1000 (AEST)", "born" : ISODate("2020-10-07T00:00:00Z") }
Vi kan se att det födda fältet har lagts till och det har ställts in på det angivna datumet.
Du kan ange datumet i följande format.
Format | Beskrivning |
---|---|
YYYY-mm-dd | Returnerar ISODate med angivet datum. |
YYYY-mm-ddTHH:MM:ss | Anger datum och tid i klientens lokala tidszon och returnerar ISODate med angiven datumtid i UTC. |
YYYY-mm-ddTHH:MM:ssZ | Anger datum och tid i UTC och returnerar ISODate med angiven datumtid i UTC. |
Heltal | Du kan också ange ett heltal som värdet. När du gör detta specificerar den datetime som millisekunder sedan Unix-epoken (1 januari 1970), och returnerar den resulterande ISODate instans. |
Unix Epoch
Här är ett exempel på hur du anger ett heltal som argument till new Date()
.
Om du gör detta specificeras datum och tid som millisekunder sedan Unix-epoken (1 januari 1970), och returnerar den resulterande ISODate
instans.
db.dogs.update(
{ "_id" : 2 },
{ $set : { "born" : new Date( 1601207768012 ) } }
)
Låt oss nu kontrollera dokumentet:
db.dogs.find( { "_id": 2 } ).pretty()
Resultat:
{ "_id" : 2, "name" : "Wag", "lastModified" : ISODate("2021-01-27T00:19:08.862Z"), "born" : ISODate("2020-09-27T11:56:08.012Z") }