Questo articolo presenta 5 modi per restituire la parte dei minuti da un oggetto Date in MongoDB.
Dati di esempio
Supponiamo di avere una collezione chiamata cats
con i seguenti documenti:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") } { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:47Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:00Z") }
Gli esempi seguenti mostrano varie opzioni per restituire la parte dei minuti da born
campo di quei documenti.
Il $minute
Operatore
Il $minute
l'operatore è progettato specificamente per restituire un documento con la parte dei minuti di una determinata data.
Possiamo eseguire il codice seguente per restituire la parte dei minuti da born
campo nel documento sopra.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthMinute: { $minute: "$born" }
}
}
]
)
Risultato:
{ "birthMinute" : 30 } { "birthMinute" : 0 } { "birthMinute" : 45 }
Puoi anche specificare il fuso orario quando usi il $minute
operatore.
Vedi MongoDB $minute
per ulteriori informazioni ed esempi.
Il $dateToString
Operatore
Il $dateToString
operatore converte un oggetto data in una stringa in base a un formato specificato dall'utente. L'utente può quindi specificare che venga restituita solo la parte dei minuti, se richiesta.
Sono disponibili identificatori di formato per ciascuna parte della data. Il %M
l'identificatore di formato restituisce la parte dei minuti.
Esempio:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthMinute: { $dateToString: { format: "%M", date: "$born" } }
}
}
]
)
Risultato:
{ "birthMinute" : "30" } { "birthMinute" : "00" } { "birthMinute" : "45" }
Puoi anche usare %Z
per restituire i minuti sfalsati da UTC come numero.
Vedi MongoDB $dateToString
per ulteriori informazioni ed esempi.
Il $dateToParts
Operatore
Il $dateToParts
l'operatore restituisce un documento che contiene le parti costitutive di un dato valore BSON Date come singole proprietà. Le proprietà restituite sono year
, month
, day
, hour
, minute
, second
e millisecond
.
Potremmo quindi utilizzare $dateToParts
in una fase della pipeline, quindi aggiungi un'altra fase della pipeline che estrae il minute
parte.
Ecco cosa $dateToParts
resi per i nostri tre documenti:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
dateParts: { $dateToParts: { date: "$born" } }
}
}
]
).pretty()
Risultato:
{ "dateParts" : { "year" : 2021, "month" : 1, "day" : 3, "hour" : 23, "minute" : 30, "second" : 15, "millisecond" : 123 } } { "dateParts" : { "year" : 2019, "month" : 12, "day" : 8, "hour" : 4, "minute" : 0, "second" : 47, "millisecond" : 0 } } { "dateParts" : { "year" : 2020, "month" : 9, "day" : 24, "hour" : 10, "minute" : 45, "second" : 0, "millisecond" : 0 } }
Questo risultato può quindi essere passato alla fase successiva della pipeline per estrarre solo il minute
campo.
Ecco cosa succede se aggiungiamo un'altra proiezione solo per il minute
campo:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
dateParts: { $dateToParts: { date: "$born" } }
}
},
{
$project:
{
birthMinute: "$dateParts.minute"
}
}
]
)
Risultato:
{ "birthMinute" : 30 } { "birthMinute" : 0 } { "birthMinute" : 45 }
Quindi, se usi $dateToParts
nella tua pipeline, avrai quindi accesso al minute
campo (e tutti gli altri campi) nella fase successiva.
Vedi MongoDB $dateToParts
per ulteriori informazioni ed esempi.
Il forEach()
Metodo
Puoi usare cursor.forEach()
per scorrere il cursore, utilizzando un metodo JavaScript come getMinutes()
o getUTCMinutes()
per restituire solo i minuti.
db.cats.find().forEach(
function(c) {
print(
c.born.getUTCMinutes()
);
}
);
Risultato:
30 0 45
Il getUTCMinutes()
Il metodo JavaScript restituisce un numero intero, compreso tra 0 e 59, che rappresenta i minuti nella data specificata in base all'ora universale.
Il getMinutes()
il metodo lo restituisce nell'ora locale.
Potresti anche notare che le opzioni precedenti restituiscono un intero documento che contiene una coppia nome/valore, mentre questa opzione restituisce solo il valore effettivo dei minuti e non l'intero documento.
La map()
Metodo
Il cursor.map()
applica una funzione a ogni documento visitato dal cursore e combina i valori in un array.
Esempio:
db.cats.find().map(
function(c) {
c = c.born.getUTCMinutes();
return c;
}
);
Risultato:
[ 30, 0, 45 ]