Operatore MongoDB $ DateDiff

Operatore MongoDB $ DateDiff
Per affrontare le date, MongoDB ha diversi operatori della data. L'operatore $ datediff, che accetta anche l'espressione della data per gestire la data, è uno di questi operatori. L'espressione di $ datediff stampa la differenza numerica tra StartDate e Enddate espressa nelle unità definite. L'espressione dell'operatore $ datediff deve contenere la data start, la data enddate e il parametro dell'unità. Il parametro "Timezone" e "StartOfWeek" sono opzionali nell'operatore $ datediff. L'algoritmo dell'operatore $ datediff utilizza il calendario gregoriano per determinare la differenza di data. Inoltre, l'operatore $ datediff richiede solo anni di salto e tempo diurno, mentre i secondi di salto non sono presi in considerazione.

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.