MongoDB $ datetrunc

MongoDB $ datetrunc

MongoDB fournit l'opérateur agrégé $ datetrunc pour tronquer les données en fonction de la date donnée. L'opérateur $ DateTrunc ne prend que la valeur de date unique pour le tronquer au format ISO. L'argument «date» du $ datetrunc prend les valeurs de date avec l'unité de temps. L'opérateur $ DateTrunc doit exiger ces entrées pour tronquer la date. De plus, nous pouvons également utiliser des arguments facultatifs tels que le fuseau horaire, le binsize et le startofweek pour abaisser la frontière de la date dans une plage de délai. L'opérateur $ DateTrunc divise le temps en intervalles de temps de binsitez dans l'unité de temps choisie pour le calcul.

Comment utiliser l'opérateur $ DateTrunc dans MongoDB?

L'opérateur $ DateTrunc est utilisé dans MongoDB pour tronquer la date donnée. Ici, nous travaillons avec la collection «Flowers» dont les documents sont utilisés par l'opérateur $ DateTrunc pour la démonstration. Pour cela, nous devons ajouter les documents au sein de la collection «Flowers» en utilisant la méthode insertMany (). La sortie après avoir exécuté la commande Inserting Documents montre que les documents sont maintenant stockés à l'intérieur de la collection «Flowers».

db.Fleurs.insertmany ([
_id: 0, type: "rose", commande: nouvelle date ("2023-03-23T15: 06: 20Z"), Qté: 100,
_id: 1, Type: "Lilly", Ordre: nouvelle date ("2021-07-19T12: 11: 10Z"), Qté: 150,
_id: 2, Type: "Tulip", commande: nouvelle date ("2022-12-12T16: 14: 30Z"), Qté: 99,
_id: 3, Type: "Whiterose", commande: nouvelle date ("2023-08-13T05: 10: 20Z"), Qté: 500,
_id: 4, Type: "Lavender", Ordre: Nouvelle date ("2020-01-01T19: 30: 10Z"), Qté: 200,
_id: 5, type: "tournesol", commande: nouvelle date ("2021-03-19t12: 12: 12Z"), Qté: 50
])

Notez qu'il existe un champ à l'intérieur du document qui est défini avec les valeurs de date. Nous allons tronquer ces dates en utilisant l'opérateur $ datetrunc de MongoDB.

WriteConcerrors: [],
insertEDID: [
index: 0, _id: 0,
index: 1, _id: 1,
index: 2, _id: 2,
index: 3, _id: 3,
index: 4, _id: 4,
index: 5, _id: 5
]],
Ninserted: 5,
nupserted: 0,
nmatched: 0,
Nmodified: 0,
Nremoved: 0,
renversé: []

Exemple n ° 1: Utilisation de l'opérateur $ DateTrunc pour tronquer la date de MongoDB

Ici, nous allons déployer l'opérateur $ DateTrunc qui récupère simplement la date tronquée de la date spécifiée. Nous avons donné une requête sur la coque MongoDB où une méthode d'agrégat est utilisée pour effectuer les autres opérateurs. Nous avons appelé la méthode du projet $ pour inclure les champs «_id» et «_order» du document correspondant. Ensuite, nous définissons un autre champ «tronqué» qui a affiché les résultats de l'opérateur $ DateTrunc. Nous avons défini l'opérateur $ DateTrunc qui est passé avec le paramètre «Date» et spécifié avec le champ «$ Order» ayant des valeurs de date. Le paramètre de date $ de l'opérateur $ DateTrunc a tronqué la date avec UTC. Ensuite, nous avons passé le paramètre «unité» où l'heure est exprimée en tant que «jour» de chaîne ». La valeur «jour» indique que l'isodate pour le début de la journée qui est renvoyé par $ datetrunc à la date.

db.Fleurs.agrégat( [

$ Project:
_id: 1,
Commande: 1,
tronquédDate:
$ datetrunc:
Date: "$ Order", unité: "Jour"




])

La sortie de l'opérateur de $ datetrunc ci-dessus a montré les dates tronquées de tous les champs de document «Ordre» dans le champ tronqué.

[

_id: 0,
Ordre: Isodate ("2023-03-23T15: 06: 20.000z "),
tronquédDate: isodate ("2023-03-23T00: 00: 00.000z ")
,

_id: 1,
Ordre: Isodate ("2021-07-19T12: 11: 10.000z "),
tronquédDate: Isodate ("2021-07-19T00: 00: 00.000z ")
,

_id: 2,
Commande: Isodate ("2022-12-12T16: 14: 30.000z "),
tronquédDate: Isodate ("2022-12-12T00: 00: 00.000z ")
,

_id: 3,
Ordre: Isodate ("2023-08-13T05: 10: 20.000z "),
tronquédDate: Isodate ("2023-08-13T00: 00: 00.000z ")
,

_id: 4,
Commande: Isodate ("2020-01-01T19: 30: 10.000z "),
tronquédDate: Isodate ("2020-01-01T00: 00: 00.000z ")
,

_id: 5,
Commande: Isodate ("2021-03-19T12: 12: 12.000z "),
tronquédDate: Isodate ("2021-03-19T00: 00: 00.000z ")

]]

Exemple n ° 2: Utilisation de l'opérateur $ DateTrunc avec l'argument Binssize pour tronquer la date de MongoDB

L'argument en option de binsize de l'opérateur $ DateTrunc est une valeur temporelle qui est exprimée comme une expression numérique. L'expression numérique doit être un entier non nul positif. Lorsque la binsize et l'argument de l'unité sont tous deux utilisés ensemble, ils définissent la période pour l'évaluation de l'opérateur $ DateTrunc. Nous avons pris le document dont la valeur «Type» de champ «Whiterose» qui est appariée par la scène $ Match ici.

Après cela, l'opérateur $ DateTrunc dans l'opérateur de projet $ a été défini pour tronquer la date à l'aide des entrées fournies. Le $ datetrunc prend d'abord la «date» d'entrée où le champ «$ Order» est donné car il contient les valeurs de date. Ensuite, nous avons réglé l'entrée «unité» avec l'entrée de l'heure à l'heure et l'entrée «Binssize» avec la valeur numérique «2».

db.Fleurs.agrégat( [
$ correspond: "type": "Whiterose",

$ Project:
_id: 1,
Commande: 1,
TroncatedResult:
$ datetrunc:
Date: "$ Order", unité: "heure", binsize: 2




])

Le temps «unité» est «l'heure» et le «binssize» a une valeur de «2». Ainsi, l'heure entre la date tronquée Retour de l'opérateur $ DateTrunc et la date de commande est de deux heures.

[

_id: 3,
Ordre: Isodate ("2023-08-13T05: 10: 20.000z "),
TroncatedResult: Isodate ("2023-08-13T04: 00: 00.000z ")

]]

Exemple n ° 3: Utilisation de l'opérateur $ DateTrunc avec l'argument StartOfWeek pour tronquer la date de MongoDB

Nous avons un autre argument d'option «startofweek» de l'opérateur $ datetrunc qui spécifie le début de la semaine. L'argument «StartOfweek» n'est effectué que lorsque «l'unité» est la semaine. Ici, nous acquérons ces documents à partir de l'opérateur de Match $ que l'opérateur Nin n'a pas sélectionné dans l'expression. Ensuite, nous avons déployé l'opérateur $ DateTrunc dans le champ de stade du projet $ «trundate». Les arguments sont passés dans l'opérateur $ datetrunc pour réduire la date. L'argument facultatif «StartOfweek» est également défini à l'intérieur de l'opérateur $ DateTrunc avec la semaine «mercredi». L'opérateur $ DateTrunc tronque le champ «Ordre» à une période de temps «1» et une période de «semaine» de l'unité dans le fuseau horaire UTC avec mercredi en tant que Starofweek.

db.Fleurs.agrégat( [
$ correspond: "_id": $ nin: [1, 3, 5],

$ Project:
_id: 1,
Commande: 1,
trundate:
$ datetrunc:
Date: "$ ordonnance", unité: "semaine", binssize: 1,
Time Zone: "UTC", Starofweek: "Mercredi"




])

Les résultats de l'opérateur $ DateTrunc sont générés avec les dates tronquées dans une journée «StartOfweek» ainsi que les valeurs de date réelles.

[

_id: 0,
Ordre: Isodate ("2023-03-23T15: 06: 20.000z "),
trundate: isodate ("2023-03-22T00: 00: 00.000z ")
,

_id: 2,
Commande: Isodate ("2022-12-12T16: 14: 30.000z "),
trundate: isodate ("2022-12-07T00: 00: 00.000z ")
,

_id: 4,
Commande: Isodate ("2020-01-01T19: 30: 10.000z "),
Trundate: Isodate ("2020-01-01T00: 00: 00.000z ")

]]

Exemple n ° 4: Utilisation de l'opérateur $ DateTrunc pour retourner null dans MongoDB

L'opérateur $ DateTrunc renvoie également la valeur nul dans un cas lorsque le «startofweek» saisit le champ qui est vide ou affecté à NULL et lorsque l'argument de l'unité a la valeur définie comme «semaine» et StartOfweek n'est pas spécifié ou a un null valeur. Voyons cette déclaration avec l'exemple de script de MongoDB. Nous avons une nouvelle inclusion du champ «tronqué-point» dans l'étape du projet $ où nous avons effectué l'opérateur $ datetrunc. L'opérateur $ DateTrunc prend la «date» d'entrée avec le champ «Ordre», l'unité en tant que semaine, et bissitez le «2» d'un fuseau horaire «America / Los_Angeles». Notez que nous n'avons pas réussi l'opérateur $ DateTrunc avec l'argument «StartOfWeek» car la semaine est attribuée au paramètre «unité».

db.Fleurs.agrégat( [

$ Project:
_id: 1,
Commande: 1,
tronquéoutput:
$ datetrunc:
Date: "$ OrderDate", unité: "semaine", binsize: 2,
Fuseau horaire: "America / Los_Angeles"




])

Là, nous avons obtenu le résultat nul sur le terrain «tronqué-point» parce que nous n'avons pas saisi l'argument «startofweek» dans l'opérateur $ datetrunc même si l'unité est une semaine.

[

_id: 0,
Ordre: Isodate ("2023-03-23T15: 06: 20.000z "),
tronqué versput: null
,

_id: 1,
Ordre: Isodate ("2021-07-19T12: 11: 10.000z "),
tronqué versput: null
,

_id: 2,
Commande: Isodate ("2022-12-12T16: 14: 30.000z "),
tronqué versput: null
,

_id: 3,
Ordre: Isodate ("2023-08-13T05: 10: 20.000z "),
tronqué versput: null
,

_id: 4,
Commande: Isodate ("2020-01-01T19: 30: 10.000z "),
tronqué versput: null
,

_id: 5,
Commande: Isodate ("2021-03-19T12: 12: 12.000z "),
tronqué versput: null

]]

Exemple n ° 5: Utilisation de l'opérateur $ DateTrunc pour tronquer la date à l'intérieur de l'opérateur de groupe $ à MongoDB

Nous avons utilisé l'opérateur $ DateTrunc au stade de groupe $ de MongoDB qui tronque la date dans la clé de groupe et obtient les résultats de la somme du champ spécifié. Nous avons déployé la phase de groupes $ et fourni une clé de groupe «_id» où le nouveau champ «trundate» est établi pour effectuer l'opération $ DateTrunc. À l'opérateur $ DateTrunc, nous avons entré la «date» en tant que champ «Ordre» avec l'heure unitaire «mois» et binssize de «5». Après cela, nous avons défini un autre champ «addquantity» où l'opérateur $ SUM est affecté avec le champ $ QTY pour l'opération d'addition.

db.Fleurs.agrégat( [

$ groupe:
_identifiant:
Datetrunc:
$ datetrunc:
Date: "$ Order", unité: "mois", Binssize: 5


,
Addquantity: $ sum: "$ qty"


])

La date du champ «Ordre» est tronquée à cinq mois en utilisant l'opérateur $ DateTrunc en une phase de groupes $ et le total des valeurs de quantité est également renvoyé dans la sortie.

[

_id: dateTrunc: isodate ("2020-01-01T00: 00: 00.000z "),
Addquantity: 200
,

_id: dateTrunc: isodate ("2020-11-01T00: 00: 00.000z "),
Addquantity: 50
,

_id: dateTrunc: isodate ("2022-12-01T00: 00: 00.000z "),
Addquantity: 199
,

_id: dateTrunc: isodate ("2021-04-01T00: 00: 00.000z "),
Addquantity: 150
,

_id: dateTrunc: isodate ("2023-05-01T00: 00: 00.000z "),
Addquantity: 500

]]

Conclusion

Nous avons couvert un opérateur MongoDB $ Datetrunc qui fonctionne avec la date pour les tronquer. Nous avons exploré différents arguments de l'opérateur $ datetrunc avec des exemples. L'opérateur $ DateTrunc ne traite que les documents de champ de date dans la collection de MongoDB. L'opérateur $ datetrunc est utilisé ici avec l'argument «Binssize» et l'argument «StartOfweek» qui sont facultatifs mais qui jouent un rôle important tout en tronquant les dates de MongoDB.