Comment utiliser les opérateurs MongoDB $ dataeadd et $ datesubstractes
Ici, nous utilisons les opérateurs $ dataeadd et $ daSubraits dans MongoDB qui renvoient les dates attendues selon l'opérateur donné. Considérez la collection «OnlineDelivery» où nous insérons quelques documents avec la méthode insertMany (). Ces documents sont utilisés sur les opérateurs $ dataeadd et $ daSubraits pour démontrer leurs performances dans MongoDB.
db.Livraison sur la lignée.INSERTMANY (
[
Id: 05,
OrderDate: isodate ("2021-12-30"),
Paiement Date: Isodate ("2022-02-19T15: 20: 00"),
Emplacement: "America / New_york",
Id: 09,
OrderDate: isodate ("2022-01-18"),
Paiement Date: Isodate ("2023-01-04T16: 10: 00"),
Emplacement: "America / New_york",
Id: 45,
OrderDate: isodate ("2020-03-24"),
Paiement Date: Isodate ("2021-05-31T21: 00: 00"),
Emplacement: "America / New_york",
Id: 55,
OrderDate: isodate ("2023-09-20"),
Paiement Date: Isodate ("2023-12-31T21: 00: 00"),
Emplacement: "America / New_york"
]]
)
Après l'insertion des documents précédents dans la collection «OnlineDelivery», la sortie est représentée comme dans ce qui suit qui reconnaît que les documents sont ajoutés:
Reconnu: vrai,
insertEDIDS:
'0': ObjectId ("63C298E9AD100B03EAD18BEE"),
'1': ObjectId ("63C298E9AD100B03EAD18BEF"),
'2': ObjectId ("63C298E9AD100B03EAD18BF0"),
'3': ObjectId ("63C29CEFAD100B03EAD18BF4")
Exemple 1: Utilisation de l'opérateur $ dataeadd dans MongoDB
L'opérateur $ dataeadd est utilisé pour configurer la date future de la date d'origine spécifiée. Ici, l'opérateur $ dataeadd est utilisé dans le champ de l'opérateur de projet $, «DeliveryDate». Nous voulons la date de livraison attendue de la date de commande. Ainsi, dans l'opérateur $ dataEadd, nous définissons le paramètre «StartDate» requis avec le champ «OrderDate». Le paramètre «StartDate» devrait être la date de début au format UTC. Après cela, nous avons un paramètre «unité» qui est spécifié avec la valeur «jour». Le paramètre «unité» indique l'incrément de temps qui est annexé au «startdate». Ensuite, nous fournissons le paramètre «montant» avec le numéro «4» qui ajoute quatre jours à la «date de démarrage».
db.Livraison sur la lignée.agrégat(
[
$ Project:
La date de livraison:
$ dataeadd:
startDate: "$ ordonnance",
Unité: "Jour",
Montant: 4
])
Les dates de commande sont incrémentées d'une unité «4» qui est affichée dans le champ «Deliverydate». Ces dates sont les temps attendus pour livrer la commande.
[
_id: ObjectId ("63C298E9AD100B03EAD18BEE"),
Livraison: isodate ("2022-01-03T00: 00: 00.000z ")
,
_id: ObjectId ("63C298E9AD100B03EAD18BEF"),
Livraison: isodate ("2022-01-22T00: 00: 00.000z ")
,
_id: ObjectId ("63C298E9AD100B03EAD18BF0"),
Livraison: isodate ("2020-03-28T00: 00: 00.000z ")
,
_id: ObjectId ("63C29CEFAD100B03EAD18BF4"),
Livraison: isodate ("2023-09-24T00: 00: 00.000z ")
]]
Exemple 2: Utilisation de l'opérateur $ dataeadd dans MongoDB pour filtrer une plage de date
Nous utilisons les $ dataEadd dans un opérateur de correspondance $ pour construire un filtre qui correspond aux documents dans une plage de dates qui est déterminée par un startdate et un délai spécifié par l'opérateur $ dataeadd. Considérez le script de MongoDB. Nous avons une étape de correspondance $ à l'intérieur de la méthode d'agrégation. L'étape de correspondance $ est définie avec le $ expantes. L'opérateur $ GT correspond au document qui satisfait la condition donnée. Nous définissons le champ $ PaymentDate dans l'opérateur $ GT qui est comparé à la date obtenue à partir de l'opérateur $ dataEadd.
Nous définissons les paramètres «Startdate» avec les paramètres «OrderDate» sur l'opérateur $ dataEadd. L '«unité» est donnée comme «mois» et le «montant» à ajouter dans les dates est donné comme «13». Ici, les documents dont les dates de livraison sont supérieures à «13» mois à partir de la «commande» sont transmises à l'opérateur de projet $. Ensuite, l'opérateur de projet $ est déployé avec le champ «Ordre» qui a l'expression de l'opérateur $ DateToString pour transformer les dates en un format mieux lisible.
db.Livraison sur la lignée.agrégat(
[
$ match:
$ expr:
$ gt:
["$ PaymentDate",
$ dataeadd:
startDate: "$ ordonnance",
Unité: "mois",
Montant: 13
]]
,
$ Project:
_id: 0,
OrderDate: 1,
Commande:
$ DateToString:
Format: "% y-% m-% d",
Date: "$ ordonnance"
])
Lors de l'exécution de la requête précédente, nous avons deux enregistrements de l'opérateur $ dataeadd qui satisfait la condition.
[
OrderDate: Isodate ("2020-03-24T00: 00: 00.000z "),
Ordre: «2020-03-24»
,
OrderDate: Isodate ("2020-03-24T00: 00: 00.000z "),
Ordre: «2020-03-24»
]]
Exemple 3: Utilisation de l'opérateur $ dataeadd dans MongoDB d'une heure
L'opérateur $ dataEadd utilise le temps pour effectuer les calculs où un fuseau horaire est défini. Ici, nous utilisons l'opérateur $ dataeadd pour augmenter la date d'une heure. Pour cela, nous devons modifier le paramètre «unité» de l'opérateur $ dataeadd. Nous avons donné un nouveau champ «Hours» dans l'opérateur de projet $. Le champ «Hours» est en outre défini par l'opérateur «$ DateToString» pour la conversion de la date au format de chaîne qui est renvoyé par l'opérateur $ dataeadd. L'opérateur $ dataEadd est spécifié avec le «startdate» où le champ $ OrderDate est fourni. Ensuite, nous utilisons le paramètre «unité» pour y régler «l'heure». Après cela, nous avons réglé le paramètre «montant» sur «24» et définissons le «fuseau horaire» avec le champ «Emplacement $» lorsque l'opérateur $ dataEadd incrémente la date d'une heure.
db.Livraison sur la lignée.agrégat(
[
$ Project:
heures:
$ DateToString:
Format: "% y-% m-% d% h:% m",
date:
$ dataeadd:
startDate: "$ ordonnance",
Unité: "heure",
Montant: 24,
Fuseau horaire: "$ emplacement"
]]
).joli()
Nous avons récupéré les mêmes dates que les dates d'origine car l'opérateur $ dataeadd a ajouté les dates par heures au numéro de «24».
_id: ObjectId ("63C298E9AD100B03EAD18BEE"),
Heures: '2021-12-31 00:00'
,
_id: ObjectId ("63C298E9AD100B03EAD18BEF"),
Heures: '2022-01-19 00:00'
,
_id: ObjectId ("63C298E9AD100B03EAD18BF0"),
Heures: '2020-03-25 00:00'
]]
Exemple 4: Utilisation de l'opérateur $ daSubrait dans MongoDB pour décrémenter une date
Dans les cas antérieurs de MongoDB, nous avons utilisé l'opérateur $ dataEadd pour obtenir la date prévue à l'avenir. Maintenant, nous utilisons l'opérateur $ datesubstract de MongoDB qui obtient la date attendue du passé de la date actuelle donnée. L'opérateur $ datesubstract saisit tous les paramètres identiques que les paramètres de l'opérateur $ dataeadd. Notez que nous utilisons le $ daSebstract dans le champ «AwaidOrdDate» de l'opérateur de projet $. Là, l'opérateur $ datesubstract entre le paramètre «startdate» avec le champ «$ payementdate» pour la soustraction de la date pour obtenir la date prévue de la commande.
Ensuite, nous avons défini l'argument «unité» avec le «mois» pour représenter le temps qui est retiré du start-date. Ensuite, le paramètre «montant» qui est défini avec le nombre «2» pour diminuer la date avec cette valeur.
db.Livraison sur la lignée.agrégat(
[
$ Project:
attendu d'orderDate:
$ datesubstract:
startDate: "$ PaymentDate",
Unité: "mois",
Montant: 2
])
Les dates attendues sont renvoyées par l'opérateur de dates-traitants qui sont les dates deux mois avant les dates réelles.
[
_id: ObjectId ("63C298E9AD100B03EAD18BEE"),
attendOrderDate: isodate ("2021-12-19T15: 20: 00.000z ")
,
_id: ObjectId ("63C298E9AD100B03EAD18BEF"),
attendOrderDate: isodate ("2022-11-04T16: 10: 00.000z ")
,
_id: ObjectId ("63C298E9AD100B03EAD18BF0"),
attenduOrderDate: Isodate ("2021-03-31T21: 00: 00.000z ")
]]
Exemple 5: Utilisation de l'opérateur $ daSubrait dans MongoDB pour trier en fonction des dates relatives
De plus, nous pouvons établir un filtre de plage en fonction du temps d'exécution de la requête en utilisant l'expression de $ datesubtract. Nous utilisons le stade de correspondance $ dans la méthode agrégée pour correspondre aux dates relatives. L'étape $ Match a l'expression qui est définie avec l'opérateur $ expr. L'opérateur $ expr utilise les opérateurs $ gt et $ daSubraits pour limiter les documents appariés avec une date de paiement dans la dernière semaine. L'opérateur $ datesubtract donne la date de format ISO actuelle car la variable $$ maintenant est spécifiée pour l'opérateur de startdate. Ensuite, la date de décrémentation obtenue à partir de l'opérateur de DaSebstract $ est transformée au format de chaîne par le «$ DateToString» qui est utilisé à l'intérieur de l'opérateur de projet $.
db.Livraison sur la lignée.agrégat(
[
$ match:
$ expr:
$ gt:
[
"$ PaymentDate",
$ datesubstract:
startDate: "$$ maintenant",
Unité: "Semaine",
Montant: 1
]]
,
$ Project:
_id: 0,
ID: 1,
Paiement:
$ DateToString:
Format: "% y-% m-% d",
Date: "$ PaymentDate"
]]
)
Nous n'avons qu'un seul enregistrement qui est récupéré par l'opérateur de $ daSeuse.
[Id: 55, paiement: '2023-12-31']
Conclusion
Les opérateurs MongoDB $ dataeadd et $ daSubstract sont démontrés dans ce guide. Nous avons utilisé ces opérateurs avec des exemples où le paramètre associé à chaque opérateur est exploré. Tout d'abord, nous avons un exemple de script de l'opérateur $ dataeadd pour ajouter les dates avec un montant donné d'un nombre avec le fuseau horaire. L'opérateur $ dataeadd est déployé pour obtenir la date future dans une fourchette et obtenir la date prévue en spécifiant l'heure en tant qu'unité. Après cela, l'opérateur $ datesubstract est exploré avec l'exemple pour obtenir les dates passées.