Come funzionano $ datefromparts e $ datetoparts in MongoDB
L'uso degli operatori $ DateFromparts e $ Datetoparts sono dimostrati qui per recuperare le date di conseguenza. Richiediamo la raccolta di MongoDB che viene utilizzata per funzionare con questi operatori. Diamo una raccolta di "parto" in cui vengono inseriti i seguenti documenti utilizzando il comando di inserimento di MongoDB.
db.Parto.InsertMany ([
"_id": 1,
"Birth_year": 2021,
"Birth_month": 09,
"Birth_day": 21,
"Birth_hour": 15,
"Birth_Minute": 60,
"Birth_second": 31
,
"_id": 2,
"Birth_year": 2021,
"Birth_month": 09,
"Birth_day": 21,
"Birth_hour": 15,
"Birth_Minute": 60,
"Birth_second": 31,
,
"_id": 3,
"Birth_year": 2023,
"Birth_month": 16,
"Birth_day": 90,
"Birth_hour": 47,
"Birth_Minute": 190,
"Birth_second": 697
,
"_id": 4,
"Birth_year": 2022,
"Birth_month": 0,
"Birth_day": 0,
"Birth_hour": 0,
"Birth_Minute": 0,
"Birth_second": 0
,
"_id": 5,
"Child_name": "Emily",
"Dob": Isodate ("2023-01-06T22: 35: 12.130Z ")
,
"_id": 6,
"Child_name": "Kim",
"Dob": Isodate ("2022-11-05T23: 10: 16.125Z ")
])
I documenti sono inseriti all'interno della raccolta fornita come mostrato nel precedente output. Possiamo utilizzare questi documenti per interrogare gli operatori $ DateFromparts e $ Datetoparts. Si noti che utilizziamo oltre l'operatore $ datefromparts nei primi quattro documenti perché le date in questi documenti sono separate. Oltre a ciò, l'operatore $ Datetoparts utilizza gli ultimi due documenti poiché contengono gli oggetti a data singola.
riconosciuto: vero,
inseritedids: '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6
Esempio 1: utilizzando l'operatore $ dateFromparts in MongoDB
L'operatore $ datefromparts viene utilizzato qui sul primo documento della raccolta fornita per ottenere l'oggetto a data singola. L'espressione "_id: 1" è specificata nella fase di $ match. Quindi, abbiamo la fase del progetto $ in cui viene inserito il campo "datesult" per distribuire l'operatore $ datefromparts. L'operatore di $ DateFromparts inserisce i parametri costituenti della data insieme ai campi specificati del documento abbinato per fornire l'oggetto della data.
db.Parto.aggregato([
$ match: _id: 1,
$ Progetto:
DateSult:
$ datefromparts:
"Anno": "$ BIVY_YEAR", "Month": "$ BIVY_MONTH", "Day": "$ BIVY_DAY", "Hour": "$ BIVY_HOUR"
])
La data singola viene recuperata da tutte le parti delle date nell'output dall'operatore $ datefromparts.
[_id: 1, dateSult: ISODATE ("2021-09-21T15: 00: 00.000Z ")]
Esempio 2: Utilizzo dell'operatore $ DateFromparts con un fuso orario specificato in MongoDB
Possiamo anche utilizzare il parametro del fuso orario all'interno dell'operatore $ datefromparts per ottenere l'oggetto data di un determinato fuso orario. Usiamo per la prima volta l'operatore $ Match per abbinare il documento predefinito che è "_id: 2". Quindi, invochiamo l'operatore $ dateFromparts nel campo "Data" della fase del progetto $. Utilizziamo tutti i parametri della data necessari per ottenere l'oggetto data oltre al parametro "zone time". Il "fuso orario" viene dato un fuso orario di "Europa/Londra" per ottenere la data risultante in quella zona specificata.
db.Parto.aggregato([
$ match: _id: 2,
$ Progetto:
data:
$ datefromparts:
"Anno": "$ BIVY_YEAR", "Month": "$ BIVY_MONTH",
"Day": "$ BIVY_DAY", "Hour": "$ BIVY_HOUR",
"Minute": "$ BIVY_MINUTE", "Second": "$ BIVY_SECOND", "Timezone": "Europe/London"
])
L'operatore $ datefromparts restituisce l'oggetto data seguente del fuso orario:
[_id: 2, data: isodate ("2021-09-21t15: 00: 31.000Z ")]
Esempio 3: utilizzando l'operatore $ dateFromparts con una gamma maggiore di date in MongoDB
Qui, otteniamo l'oggetto data dal secondo documento le cui parti di data sono maggiori dell'intervallo. All'interno dell'operatore di $ datefromparts, utilizziamo i parametri costituenti per generare un singolo oggetto della data dall'intervallo che è maggiore dei valori della data specificati. Impostamo i campi dai documenti secondo i parametri costituenti specificati. L'operatore $ datefromparts aumenta l'anno "2023" a "2024" e quindi imposta il valore del mese su "12" per dare l'oggetto della data singola dai valori della data non validi.
db.Parto.aggregato([
$ match: _id: 3,
$ Progetto:
DateFromparts:
$ datefromparts:
"Anno": "$ BIVY_YEAR",
"Mese": "$ BIVY_MONTH",
"Day": "$ BIVY_DAY",
"Hour": "$ BIVY_HOUR",
"Minute": "$ Birth_Minute",
"Secondo": "$ BIVY_SECOND"
])
Come visto nell'output, i componenti della data nell'oggetto della data restituito differiscono dai valori della data corrispondenti nel documento. Il motivo è che la data è stata ricalcolata da $ datefromparts per prendere in considerazione i parametri della data che sono al di fuori dell'intervallo previsto.
[_id: 3, DateFromparts: ISODATE ("2024-07-01T02: 21: 37.000Z ")]
Esempio 4: utilizzando l'operatore $ dateFromparts con un intervallo inferiore alle date specificate in MongoDB
Ora, abbiamo un altro caso dell'operatore $ DateFromparts in cui i valori della data sono inferiori all'intervallo valido di date. Abbiniamo il documento che contiene i campi di data e ora oltre i rispettivi intervalli accettabili. Il documento il cui "_id" è "3" è passato all'interno dell'espressione di $ match stage. Successivamente, creiamo il campo "DateFromparts" nella fase del progetto $. Il campo "DateFromparts" è impiegato con l'operatore $ DateFromparts. L'operatore $ datefromparts viene approvato con i parametri associati per ottenere l'oggetto data. Poiché abbiamo tutti i valori dei parametri della data nel documento abbinato che sono zero che sono inferiori ai valori minimi delle intervalli di data, l'operatore $ datefromparts ripristina tutti i parametri della data per generare l'oggetto singolo.
db.Parto.aggregato([
$ match: _id: 4,
$ Progetto:
DateFromparts:
$ datefromparts:
"Anno": "$ BIVY_YEAR",
"Mese": "$ BIVY_MONTH",
"Day": "$ BIVY_DAY",
"Hour": "$ BIVY_HOUR",
"Minute": "$ Birth_Minute",
"Secondo": "$ BIVY_SECOND"
])
La data ISO a risultante è formata nella seguente operatore di $ DateFromparts che fa cadere l'anno "2022" di uno e limita il mese a 12.
[_id: 4, DateFromparts: Isodate ("2021-11-30T00: 00: 00.000Z ")]
Esempio 5: utilizzando l'operatore $ Datetoparts in MongoDB
Ora, utilizziamo un altro operatore di $ Datetoparts da cui si ottengono le parti della data. Qui, abbiamo una semplice dimostrazione in cui abbiniamo "_id" il cui valore è "5" nella fase iniziale. Dopo aver abbinato il documento, la fase del progetto $ ottiene i risultati dell'operatore $ Datetoparts nel campo "DateInparts". L'operatore di $ Datetoparts inserisce il parametro "Data" fornito con il campo "$ dob". Il campo $ dob ha l'oggetto data che è separato nelle parti della data dall'operatore $ Datetoparts.
db.Parto.aggregato(
[
$ match: _id: 5,
$ Progetto:
_id: 0,
DateInParts: $ Datetoparts: Date: "$ dob"
"
)
L'operatore $ Datetoparts restituisce le seguenti parti della data dal campo $ Dob del documento abbinato:
[
DateInparts:
Anno: 2023,
Mese: 1,
Giorno: 6,
Ora: 22,
Minuto: 35,
Secondo: 12,
millisecondo: 130
"
Esempio 6: utilizzando l'operatore $ Datetoparts per il formato della data della settimana ISO in MongoDB
Possiamo utilizzare l'opzione ISO8601 con il valore reale per aggiornare il documento restituito per utilizzare i campi della data della settimana ISO. La data viene calcolata utilizzando la specifica ISO 8601. Considera che modifichiamo il documento che ha "_id" uguale al valore di "5". In quel documento, applichiamo l'operatore $ Datetoparts in cui il parametro "Data" è impostato con il campo "$ dob". Il parametro "ISO8601" è anche dato con il valore che è impostato su "True".
db.Parto.aggregato(
[
$ match: _id: 5,
$ Progetto:
_id: 0,
DatePartsiso:
$ Datetoparts:
Data: "$ dob",
ISO8601: vero
"
).bello()
Le parti della data di quel documento sono ottenute dall'operatore $ Datetoparts che contiene i valori del campo e della data della settimana ISO.
[
DatePartsiso:
Isoweekyear: 2023,
ISOWEEK: 1,
IsodayofWeek: 5,
Ora: 22,
Minuto: 35,
Secondo: 12,
millisecondo: 130
"
Conclusione
Questo articolo ha spiegato i termini del metodo della pipeline di aggregazione MongoDB, $ dateFromparts e $ Datetoparts. Gli operatori $ dateFromparts e $ Datetoparts lavorano in modo opposto. L'operatore $ datefromparts fornisce la data del formato ISO dalle parti della data. D'altra parte, $ Datetoparts prende la data del formato ISO per restituire le parti della data con il valore. Abbiamo esplorato questi operatori con casi semplici e complessi di esempi per chiarire il concetto di utilizzo degli operatori $ datefromparts e $ datetoparts in MongoDB.