MongoDB $ Dateeadd e $ DateSubtract Operatori

MongoDB $ Dateeadd e $ DateSubtract Operatori
MongoDB fornisce vari operatori di pipeline di aggregazione per scopi diversi. Tra tutti gli operatori, discuteremo rispettivamente di $ DateAdd e degli operatori $ DateSubtract di MongoDB. L'operatore $ Dateedd aumenta l'oggetto data di unità di tempo predeterminato. Mentre l'operatore $ DateSubtract viene utilizzato per ridurre gli oggetti della data in base alle unità di tempo fornite. Il risultato restituito degli operatori $ Dateead e $ datesubtract è sempre un oggetto di data, indipendentemente dal tipo di dati di input.

Come utilizzare gli operatori MongoDB $ DateEadd e $ DateSubtract

Qui, utilizziamo gli operatori di $ Dateeadd e $ dateAdtract di MongoDB che restituiscono le date previste secondo l'operatore dato. Considera la raccolta di "OnLinedelivery" in cui inseriamo alcuni documenti con il metodo InsertMany (). Questi documenti vengono utilizzati sugli operatori di $ Dateeadd e $ dateadd per dimostrare le loro prestazioni in MongoDB.

db.OnLinedelivery.InsertMany (
[
Id: 05,
OrderDate: ISODATE ("2021-12-30"),
Paymentdate: ISODATE ("2022-02-19T15: 20: 00"),
Posizione: "America/New_york",
Id: 09,
OrderDate: ISODATE ("2022-01-18"),
Paymentdate: ISODATE ("2023-01-04T16: 10: 00"),
Posizione: "America/New_york",
Id: 45,
OrderDate: ISODATE ("2020-03-24"),
PaymentDate: ISODATE ("2021-05-31T21: 00: 00"),
Posizione: "America/New_york",
Id: 55,
OrderDate: ISODATE ("2023-09-20"),
PaymentDate: ISODATE ("2023-12-31T21: 00: 00"),
Posizione: "America/New_york"
"
)

Dopo l'inserimento dei documenti precedenti all'interno della raccolta di "OnLinedeyeley", l'output è rappresentato come nel seguente che riconosce che i documenti vengono aggiunti:


riconosciuto: vero,
inseritedids:
'0': ObjectId ("63C298E9AD100B03EAD18BEE"),
'1': objectID ("63C298E9AD100B03EAD18BEF"),
'2': ObjectId ("63C298E9AD100B03EAD18BF0"),
'3': objectId ("63C29CEFAD100B03EAD18BF4")

Esempio 1: Utilizzo dell'operatore $ DateEadd in MongoDB

L'operatore $ Dateedd viene utilizzato per configurare la data futura della data originale specificata. Qui, l'operatore $ Dateedd è impiegato nel campo dell'operatore del progetto $, "Deliverydate". Vogliamo la data di consegna prevista della data dell'ordine. Quindi, all'interno dell'operatore $ DateADD, abbiamo impostato il parametro "StartDate" richiesto con il campo "OrderDate". Il parametro "StartDate" dovrebbe essere la data di inizio in formato UTC. Successivamente, abbiamo un parametro "unità" che è specificato con il valore "day". Il parametro "unità" indica l'incremento del tempo che viene aggiunto alla "data start". Quindi, forniamo il parametro "Importo" con il numero "4" che aggiunge quattro giorni alla "Data di partenza".

db.OnLinedelivery.aggregato(
[

$ Progetto:

Data di consegna:

$ Dateedd:

StartDate: "$ orderdate",
Unità: "Day",
Importo: 4




])

Le date ordini sono incrementate da un'unità "4" che viene visualizzata nel campo "consegna". Queste date sono i tempi previsti per consegnare l'ordine.

[

_id: objectId ("63c298e9ad100b03ead18bee"),
Deliverydate: ISODATE ("2022-01-03T00: 00: 00.000Z ")
,

_id: objectId ("63c298e9ad100b03ead18bef"),
Deliverydate: ISODATE ("2022-01-22T00: 00: 00.000Z ")
,

_ID: ObjectID ("63C298E9AD100B03EAD18BF0"),
Deliverydate: ISODATE ("2020-03-28T00: 00: 00.000Z ")
,

_ID: ObjectID ("63C29CEFAD100B03EAD18BF4"),
Deliverydate: ISODATE ("2023-09-24T00: 00: 00.000Z ")

"

Esempio 2: Utilizzo dell'operatore $ Dateedd in MongoDB per filtrare una gamma di data

Utilizziamo $ Dateedd in A $ Match Operator per creare un filtro che corrisponda ai documenti entro una gamma di date determinate da una data start e da un lasso di tempo specificato dall'operatore $ Dateeadd. Considera la sceneggiatura di MongoDB. Abbiamo una fase di $ match all'interno del metodo aggregato. La fase di $ match è definita con l'operatore $ exp in cui è specificata l'espressione condizionale di $ gt. L'operatore $ GT corrisponde al documento che soddisfa la condizione data. Abbiamo impostato il campo $ PaymentDate nell'operatore $ GT che viene confrontato con la data ottenuta dall'operatore $ DEADD.

Abbiamo impostato il "startdate" con i parametri "orderdate" sull'operatore $ dateadd. L '"unità" è data come "mese" e l' "importo" da aggiungere nelle date è dato come "13". Qui, i documenti le cui date di consegna sono maggiori di "13" mesi dalla "data order" sono passati all'operatore del progetto $. Quindi, l'operatore $ Project viene distribuito con il campo "Ordine" che ha l'espressione dell'operatore $ DateToString per trasformare le date in un formato migliore leggibile.

db.OnLinedelivery.aggregato(
[

$ match:

$ expr:

$ gt:
["$ Payagedate",

$ Dateedd:

StartDate: "$ orderdate",
Unità: "Mese",
Importo: 13


"


,

$ Progetto:

_id: 0,
OrderDate: 1,
Ordine:

$ DateToString:

Formato: "%y-%m-%d",
Data: "$ orderdate"




])

Dopo aver eseguito la query precedente, abbiamo due record dall'operatore $ Dateedd che soddisfa la condizione.

[

OrderDate: ISODATE ("2020-03-24T00: 00: 00.000Z "),
Ordine: "2020-03-24"
,

OrderDate: ISODATE ("2020-03-24T00: 00: 00.000Z "),
Ordine: "2020-03-24"

"

Esempio 3: Utilizzo dell'operatore $ Dateedd in MongoDB di un'ora

L'operatore di $ Dateedd utilizza il tempo per eseguire i calcoli quando viene definito un fuso orario. Qui, utilizziamo l'operatore $ Dateedd per incrementare la data di un'ora. Per questo, dobbiamo modificare il parametro "unità" dell'operatore $ Dateeadd. Abbiamo dato un nuovo campo "ore" nell'operatore del progetto $. Il campo "Hours" è ulteriormente definito dall'operatore "$ DateToString" per la conversione della data in formato stringa che viene restituito dall'operatore $ Dateedd. L'operatore di $ Dateedd è specificato con "StartDate" in cui è fornito il campo $ orderdate. Quindi, utilizziamo il parametro "unità" per impostare la "ora" lì. Successivamente, abbiamo impostato il parametro "Importo" su "24" e impostiamo il "fuso orario" con il campo "$ posizione" quando l'operatore $ dateadd aumenta la data di un'ora.

db.OnLinedelivery.aggregato(
[

$ Progetto:

ore:

$ DateToString:

Formato: "%y-%m-%d%h:%m",
data:

$ Dateedd:

StartDate: "$ orderdate",
Unità: "Hour",
Importo: 24,
fuso orario: "$ posizione"






"
).bello()

Abbiamo recuperato le stesse date delle date originali perché l'operatore $ Dateedd ha aggiunto le date per ore nel numero di importo "24".


_id: objectId ("63c298e9ad100b03ead18bee"),
Ore: "2021-12-31 00:00"
,

_id: objectId ("63c298e9ad100b03ead18bef"),
Ore: "2022-01-19 00:00"
,

_ID: ObjectID ("63C298E9AD100B03EAD18BF0"),
Ore: "2020-03-25 00:00"

"

Esempio 4: Utilizzo dell'operatore $ DateSubtract in MongoDB per ridurre una data

Nei casi precedenti di MongoDB, abbiamo utilizzato l'operatore $ Dateedd per ottenere la data prevista in futuro. Ora, utilizziamo l'operatore $ DateSubtract di MongoDB che ottiene la data prevista per la data in corso. L'operatore $ DateSubtract inserisce tutti i parametri uguali ai parametri nell'operatore $ Dateeadd. Si noti che utilizziamo $ DateSubtract nel campo "previsto TorreDate" dell'operatore del progetto $. Lì, l'operatore di $ DateSubtract inserisce il parametro "StartDate" con il campo "$ PaymentDate" per la sottrazione della data per ottenere la data prevista dell'ordine.

Quindi, abbiamo impostato l'argomento "unità" con il "mese" per rappresentare il tempo che viene portato via dalla data start. Il prossimo è il parametro "importo" definito con il numero "2" per ridurre la data con questo valore.

db.OnLinedelivery.aggregato(
[

$ Progetto:

AttendingOrderDate:

$ datesubtract:

StartDate: "$ Paymentdate",
Unità: "Mese",
Importo: 2




])

Le date previste vengono restituite dall'operatore $ DateSubtract che sono le date due mesi prima delle date effettive.

[

_id: objectId ("63c298e9ad100b03ead18bee"),
AttendingOrderDate: isodate ("2021-12-19T15: 20: 00.000Z ")
,

_id: objectId ("63c298e9ad100b03ead18bef"),
AttectOrderDate: ISODATE ("2022-11-04T16: 10: 00.000Z ")
,

_ID: ObjectID ("63C298E9AD100B03EAD18BF0"),
AttendingOrderDate: ISODATE ("2021-03-31T21: 00: 00.000Z ")

"

Esempio 5: Utilizzo dell'operatore $ DateSubtract in MongoDB per ordinare in base alle date relative

Inoltre, possiamo stabilire un filtro a gamma a seconda del tempo di esecuzione della query utilizzando l'espressione di $ DateSubtract. Utilizziamo la fase di $ Match nel metodo aggregato per abbinare le date relative. La fase di $ match ha l'espressione che è impostata con l'operatore $ EXPR. L'operatore $ EXPR utilizza gli operatori $ GT e $ DateSubtract per limitare i documenti abbinati con una data di pagamento all'interno dell'ultima settimana. L'operatore $ DateSubtract fornisce l'attuale data del formato ISO poiché la variabile $ $ ora è specificata per l'operatore StartDate. Quindi, la data di decremento ottenuta dall'operatore $ DateSubtract viene trasformata in formato stringa dal "$ DateToString" che viene impiegato all'interno dell'operatore $ Project.

db.OnLinedelivery.aggregato(
[

$ match:

$ expr:

$ gt:
[
"$ Payagedate",

$ datesubtract:

StartDate: "$$ ora",
Unità: "Settimana",
Importo: 1


"


,

$ Progetto:

_id: 0,
ID: 1,
Pagamento:

$ DateToString:

Formato: "%y-%m-%d",
Data: "$ payagedate"




"
)

Abbiamo un solo record che viene recuperato dall'operatore $ datesubtract.

[Id: 55, pagamento: '2023-12-31']

Conclusione

In questa guida sono dimostrati gli operatori MongoDB $ Dateead e $ DateSubtract. Abbiamo usato questi operatori con esempi in cui viene esplorato il parametro associato a ciascun operatore. Innanzitutto, abbiamo uno script di esempio dell'operatore $ Dateedd per aggiungere le date con un determinato importo di un numero con il fuso orario. L'operatore di $ Dateedd viene ulteriormente distribuito per ottenere la data futura entro un intervallo e ottenere la data prevista specificando l'ora come unità. Successivamente, l'operatore $ datesubtract viene esplorato con l'esempio per ottenere le date passate.