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 imongoskal. - 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")
}