Come utilizzare l'operatore $ DateDiff in MongoDB
L'operatore $ datediff restituisce la differenza tra due date nell'unità data. L'operatore $ datediff ha vari parametri in cui sono richiesti parametri di startdate, enddate e unità. Senza questi parametri, potremmo incontrare l'errore del server MongoDB. Utilizziamo la collezione "Project" per lavorare con l'operatore $ DateDiff. La raccolta "Project" è inizialmente vuota che può essere inserita con i documenti applicando la seguente query:
db.Progetto.InsertMany ([
"PID": 1,
"Progetto": "Applicazione Android",
"Mese": "Gennaio",
"Team": 10,
"StartDate": ISODATE ("2020-01-05"),
"Enddate": isodate ("2021-01-10")
,
"PID": 2,
"Progetto": "Drone",
"Mese": "Febbraio",
"Team": 20,
"StartDate": ISODATE ("2023-02-01"),
"Enddate": isodate ("2024-02-28")
,
"PID": 3,
"Progetto": "Sito Web di shopping",
"Mese": "March",
"Team": 5,
"StartDate": ISODATE ("2021-03-25"),
"Enddate": isodate ("2022-03-01")
,
"PID": 4,
"Progetto": "Gestione del software",
"Mese di maggio",
"Team": 9,
"StartDate": Isodate ("2022-05-01"),
"Enddate": isodate ("2023-05-31")
])
Le precedenti query hanno inserito i documenti nella raccolta "Project" di MongoDB come mostrato il risultato. Ora, possiamo vedere che tutti i documenti hanno due campi che contengono la data del formato ISO. Usiamo questi campi di date rispetto all'operatore $ datediff per scoprire la differenza in queste date.
riconosciuto: vero,
inseritedids:
'0': objectId ("63C53402B91C87F8B6A855f8"),
'1': objectId ("63C53402B91C87F8B6A855F9"),
'2': objectId ("63C53402B91C87F8B6A855FA"),
'3': objectId ("63C53402B91C87F8B6A855FB")
Esempio 1: Utilizzo di $ DateDiff in MongoDB per la differenza tra la data
L'operatore $ datediff è impiegato nei campi "startdate" e "enddate" di tutti i documenti della raccolta per ottenere la differenza in queste date che è un valore intero. Utilizziamo il metodo aggregato in cui è impiegata la fase del progetto $ per includere i campi. Includiamo i campi StartDate e Enddate poiché è specificato il valore di "1". Successivamente, inseriamo un campo "risultato" in cui l'operatore $ datediff è definito con il suo parametro. Abbiamo impostato il parametro "StartDate" che segna l'inizio del tempo.
Qui, forniamo il campo $ StartDate al parametro "StartDate". Quindi, impostiamo il parametro "enddate" in cui il periodo della data termina e diamo il campo "$ enddate". Successivamente, forniamo un altro parametro "unità" richiesto all'operatore $ datediff a cui assegniamo un valore "day". Questo parametro misura il tempo tra StartDate e Enddate. Il metodo Pretty () di MongoDB genera i risultati dell'operatore $ datediff in modo strutturato.
db.Progetto.aggregato(
[
$ Progetto:
Inizia: "$ startdate",
Fine: "$ enddate",
risultato:
$ datediff:
StartDate: "$ startdate",
Enddate: "$ enddate",
Unità: "Day"
])
La differenza tra StartDate e Enddate di ciascuna data del documento fornita viene visualizzata in un valore numerico rispetto al campo "Risultato" secondo l'unità specificata nell'operatore $ DateDiff.
[
_id: objectId ("63C53466B91C87F8B6A855fc"),
Avvia: ISODATE ("2020-01-05T00: 00: 00.000Z "),
End: ISODATE ("2021-01-10T00: 00: 00.000Z "),
Risultato: lungo ("371")
,
_ID: ObjectId ("63C53466B91C87F8B6A855FD"),
Avvia: ISODATE ("2023-02-01T00: 00: 00.000Z "),
End: Isodate ("2024-02-28T00: 00: 00.000Z "),
Risultato: lungo ("392")
,
_ID: ObjectID ("63C53466B91C87F8B6A855FE"),
Avvia: ISODATE ("2021-03-25T00: 00: 00.000Z "),
End: ISODATE ("2022-03-01T00: 00: 00.000Z "),
Risultato: lungo ("341")
,
_ID: ObjectID ("63C53466B91C87F8B6A85FF"),
Avvia: ISODATE ("2022-05-01T00: 00: 00.000Z "),
End: Isodate ("2023-05-31T00: 00: 00.000Z "),
Risultato: Long ("395")
"
Esempio 2: Utilizzo di $ DateDiff in MongoDB per trovare la differenza tra la data e un numero
Se proviamo a ottenere la differenza di StartDate dal campo numerico, l'errore viene sollevato in MongoDB a causa del valore dell'argomento non valido. Qui, abbiamo impostato l'operatore $ datediff all'interno dell'attributo "risultato" dell'operatore di progetto $. L'operatore $ datediff prende l'argomento "startdate" in cui viene dato il campo "$ startdate" del documento. Quindi, inseriamo la "enddate" in cui viene fornito il campo "team". Il campo $ team è archiviato con il valore numerico che non può essere utilizzato per l'operatore di differenza dall'operatore $ datediff. Quindi, assegniamo un valore "giorno" all'argomento "unità".
db.Progetto.aggregato(
[
$ Progetto:
Risultato:
$ datediff:
StartDate: "$ startdate",
Enddate: "$ team",
Unità: "Day"
]).bello()
Abbiamo un seguente errore del server MongoDB perché il parametro "enddate" non è un valore della data. Pertanto, è necessario che l'operatore $ Datediff si occupi solo delle date.
Mongoservererror: Planexecutor Errore durante l'aggregazione :: causato da :: $ datediff richiede "enddate" per essere una data, ma ha ottenuto int.
Esempio 3: Utilizzo di $ DateDiff in MongoDB per sottrarre la data di uscita da StartDate
Il prossimo caso dell'operatore $ datediff è dove cambiamo i valori dei parametri "StartDate" e "Enddate". Quindi, i risultati generati sono nei valori negativi. Facciamo la seguente query dell'operatore $ datediff in cui distribuiamo l'operatore $ datediff. L'operatore $ datediff viene inserito con il parametro "startdate" in cui viene assegnato il campo "enddate". D'altra parte, diamo un campo "StartDate" che è l'ora di inizio per il parametro "Enddate". L'operatore $ datediff restituisce la differenza tra i valori "enddate" dai valori "startdate". Successivamente, abbiamo impostato il parametro dell'unità con il "giorno" per misurare i periodi dati delle date.
db.Progetto.aggregato(
[
$ Progetto:
Risultato:
$ datediff:
StartDate: "$ enddate",
Enddate: "$ startdate",
Unità: "Day"
"
).bello()
L'operatore $ datediff emette le date del documento nel campo "risultato" in cui tutti i valori sono in una forma negativa a causa dei valori degli argomenti di switch.
[
_id: objectId ("63c53466b91c87f8b6a855fc"), risultato: long ("-371"),
_id: objectId ("63c53466b91c87f8b6a855fd"), risultato: long ("-392"),
_id: objectId ("63c53466b91c87f8b6a855fe"), risultato: long ("-341"),
_id: objectId ("63c53466b91c87f8b6a855ff"), risultato: long ("-395")
"
Esempio 4: Utilizzo di $ DateDiff in MongoDB con i diversi valori unitari
La differenza di tempo che viene misurata nelle unità interi viene restituita dall'espressione $ datediff. Un'unità non ha parti frazionarie. Non ci sono semestre quando contano da anni. Eseguiamo la query di questa affermazione in cui viene utilizzato l'argomento "unità" dell'operatore $ datediff con valori diversi. Creiamo il campo "Yearunit" all'interno dell'operatore del progetto $ e utilizziamo l'operatore $ datediff lì. L'operatore $ datediff prende i valori contro gli argomenti "StartDate" e "Enddate".
Si noti che abbiamo impostato il periodo "anno" nell'argomento "unità". La differenza tra le date specificate viene valutata in base all'unità dell'anno. Successivamente, abbiamo un altro campo che è "mensile" in cui l'operatore $ datediff è specificato con il valore "unità" "mese". Successivamente, il campo "DayUnit" dell'operatore del progetto $ è chiamato $ datediff con il valore "unità" come "giorno" per misurare la differenza del periodo delle date con l'unità diurna.
db.Progetto.aggregato(
[
$ Progetto:
StartDate: "$ startdate",
Enddate: "$ enddate",
Yearunit:
$ datediff:
StartDate: "$ startdate",
Enddate: "$ enddate",
Unità: "anno"
,
MonthUnit:
$ datediff:
StartDate: "$ startdate",
Enddate: "$ enddate",
Unità: "Mese"
,
DaysUnit:
$ datediff:
StartDate: "$ startdate",
Enddate: "$ enddate",
Unità: "Day"
"
)
Le differenze di data vengono restituite nei valori unitari forniti dall'operatore $ datediff.
[
_id: objectId ("63C53466B91C87F8B6A855fc"),
StartDate: ISODATE ("2020-01-05T00: 00: 00.000Z "),
Enddate: isodate ("2021-01-10T00: 00: 00.000Z "),
Yearunit: Long ("1"),
MonthUnit: Long ("12"),
DaysUnit: Long ("371")
,
_ID: ObjectId ("63C53466B91C87F8B6A855FD"),
StartDate: ISODATE ("2023-02-01T00: 00: 00.000Z "),
Enddate: isodate ("2024-02-28T00: 00: 00.000Z "),
Yearunit: Long ("1"),
MonthUnit: Long ("12"),
DaysUnit: Long ("392")
,
_ID: ObjectID ("63C53466B91C87F8B6A855FE"),
StartDate: ISODATE ("2021-03-25T00: 00: 00.000Z "),
Enddate: isodate ("2022-03-01T00: 00: 00.000Z "),
Yearunit: Long ("1"),
MonthUnit: Long ("12"),
DaysUnit: Long ("341")
,
_ID: ObjectID ("63C53466B91C87F8B6A85FF"),
StartDate: ISODATE ("2022-05-01T00: 00: 00.000Z "),
Enddate: isodate ("2023-05-31T00: 00: 00.000Z "),
Yearunit: Long ("1"),
MonthUnit: Long ("12"),
DaysUnit: Long ("395")
"
Conclusione
L'articolo ha esplorato il nuovo operatore MongoDB $ DateDiff in cui viene condotta l'operazione di differenza tra le due date. Abbiamo usato l'operatore $ datediff per ottenere la differenza tra i valori dalle date specificate. L'operatore $ datediff prende i parametri specificati con i valori della data dal documento insieme al tempo dell'unità. Abbiamo anche eseguito alcuni esempi in cui l'operatore $ datediff viene utilizzato in diversi casi per restituire il risultato entro un periodo unitario.