Comment utiliser l'opérateur $ Dadiff à MongoDB
L'opérateur $ Dadiff renvoie la différence entre deux dates dans l'unité donnée. L'opérateur $ DADIFF a divers paramètres dans lesquels les paramètres de startdate, d'administration et d'unité sont requis. Sans ces paramètres, nous pouvons rencontrer l'erreur du serveur MongoDB. Nous utilisons la collection «Project» pour travailler avec l'opérateur $ Dadiff. La collection «Project» est initialement vide qui peut être insérée avec les documents en appliquant la requête suivante:
db.Projet.insertmany ([
"Pid": 1,
"Projet": "Application Android",
"Mois": "janvier",
"Équipe": 10,
"Startdate": isodate ("2020-01-05"),
"Enddate": isodate ("2021-01-10")
,
"Pid": 2,
"Projet": "drone",
"Mois": "Février",
"Équipe": 20,
"Startdate": isodate ("2023-02-01"),
"Enddate": Isodate ("2024-02-28")
,
"Pid": 3,
"Projet": "Site d'achat",
"Mois mars",
"Équipe": 5,
"Startdate": isodate ("2021-03-25"),
"Enddate": isodate ("2022-03-01")
,
"Pid": 4,
"Projet": "Gestion des logiciels",
"Le mois de mai",
"Équipe": 9,
"Startdate": isodate ("2022-05-01"),
"Enddate": isodate ("2023-05-31")
])
La requête précédente a inséré les documents de la collection «Project» de MongoDB comme le résultat est montré. Maintenant, nous pouvons voir que tous les documents ont deux champs contenant la date du format ISO. Nous utilisons ces champs de date sur l'opérateur $ DADAIFF pour découvrir la différence dans ces dates.
Reconnu: vrai,
insertEDIDS:
'0': ObjectId ("63C53402B91C87F8B6A855F8"),
'1': ObjectId ("63C53402B91C87F8B6A855F9"),
'2': ObjectId ("63C53402B91C87F8B6A855FA"),
'3': ObjectId ("63C53402B91C87F8B6A855FB")
Exemple 1: Utilisation du $ dadiff dans MongoDB pour la différence entre la date
L'opérateur $ Dadiff est employé sur les champs «startdate» et «findate» de tous les documents de la collection pour obtenir la différence dans ces dates qui est une valeur entière. Nous utilisons la méthode agrégée où l'étape du projet $ est utilisée pour inclure les champs. Nous incluons les champs Startdate et Enddate car la valeur de «1» leur est spécifiée. Après cela, nous insérons un champ «Résultat» où l'opérateur $ Dadiff est défini avec son paramètre. Nous définissons le paramètre «startdate» qui marque le début du temps.
Ici, nous fournissons le champ $ startdate au paramètre «startDate». Ensuite, nous définissons le paramètre «Enddate» où se termine la période de date, et nous donnons le champ «$ enddate». Après cela, nous fournissons un autre paramètre «unité» requis à l'opérateur $ Dadiff à laquelle nous attribuons une valeur «jour». Ce paramètre mesure le temps entre le start-date et la fin. La méthode jolie () de MongoDB génère les résultats de l'opérateur $ DADIFF de manière structurée.
db.Projet.agrégat(
[
$ Project:
Démarrer: "$ startdate",
Fin: "$ enddate",
résultat:
$ Dadiff:
startDate: "$ startdate",
EndDate: "$ enddate",
Unité: "Jour"
])
La différence entre Startdate et Enddate de chaque date de document fournie est affichée dans une valeur numérique par rapport au champ «Résultat» en fonction de l'unité spécifiée de l'opérateur $ Dadiff.
[
_id: ObjectId ("63C53466B91C87F8B6A855FC"),
Démarrer: Isodate ("2020-01-05T00: 00: 00.000z "),
Fin: Isodate ("2021-01-10T00: 00: 00.000z "),
Résultat: long ("371")
,
_id: ObjectId ("63C53466B91C87F8B6A855FD"),
Démarrer: Isodate ("2023-02-01T00: 00: 00.000z "),
Fin: Isodate ("2024-02-28T00: 00: 00.000z "),
Résultat: long ("392")
,
_id: ObjectId ("63C53466B91C87F8B6A855FE"),
Démarrer: Isodate ("2021-03-25T00: 00: 00.000z "),
Fin: Isodate ("2022-03-01T00: 00: 00.000z "),
Résultat: long ("341")
,
_id: ObjectId ("63C53466B91C87F8B6A855FF"),
Démarrer: Isodate ("2022-05-01T00: 00: 00.000z "),
Fin: Isodate ("2023-05-31T00: 00: 00.000z "),
Résultat: long ("395")
]]
Exemple 2: Utilisation du $ Dadiff dans MongoDB pour trouver la différence entre la date et un nombre
Si nous essayons d'obtenir la différence de la date de démarrage du champ Nombre, l'erreur est augmentée dans MongoDB en raison de la valeur d'argument non valide. Ici, nous définissons l'opérateur $ DADIFF dans l'attribut «Résultat» de l'opérateur de projet $. L'opérateur $ Dadiff prend l'argument «startdate» où le champ «$ startdate» du document est donné. Ensuite, nous entrons le «Tendate» où le champ «Team» est fourni. Le champ de l'équipe $ est stocké avec la valeur numérique qui ne peut pas être utilisée pour l'opérateur de différence par l'opérateur $ DADIFF. Ensuite, nous attribuons une valeur «jour» à l'argument «unité».
db.Projet.agrégat(
[
$ Project:
résultat:
$ Dadiff:
startDate: "$ startdate",
Enddate: "$ team",
Unité: "Jour"
]).joli()
Nous avons une erreur de serveur MongoDB suivant car le paramètre «Enddate» n'est pas une valeur de date. Ainsi, il est nécessaire que l'opérateur $ Dadiff ne traite que des dates.
MongoServerError: PlanexecUtor Erreur pendant l'agrégation :: causée par :: $ Datediff exige que la «fin de fin» soit une date, mais a obtenu int.
Exemple 3: Utilisation du $ dadiff dans MongoDB pour soustraire la fin de la date de la date de démarrage
Le cas suivant de l'opérateur $ DADIFF est l'endroit où nous changeons les valeurs des paramètres «Startdate» et «Enddate». Ensuite, les résultats générés sont dans les valeurs négatives. Ayons la requête de l'opérateur DADADIFF $ suivant où nous déployons l'opérateur $ DADIFF. L'opérateur $ DADIFF est entré avec le paramètre «StartDate» où le champ «Enddate» est attribué. D'un autre côté, nous donnons un champ «Startdate» qui est l'heure de début du paramètre «Enddate». L'opérateur $ DADIFF renvoie la différence entre les valeurs «Enddate» des valeurs «startdate». Après cela, nous avons réglé le paramètre unitaire avec le «jour» pour mesurer les périodes données des dates.
db.Projet.agrégat(
[
$ Project:
résultat:
$ Dadiff:
startDate: "$ enddate",
EndDate: "$ startdate",
Unité: "Jour"
]]
).joli()
L'opérateur $ DADIFF sort les dates du document dans le champ «Résultat» où toutes les valeurs sont sous une forme négative en raison des valeurs d'argument du commutateur.
[
_id: ObjectId ("63C53466B91C87F8B6A855FC"), résultat: long ("- 371"),
_id: ObjectId ("63C53466B91C87F8B6A855FD"), résultat: long ("- 392"),
_id: ObjectId ("63C53466B91C87F8B6A855FE"), résultat: long ("- 341"),
_id: ObjectId ("63C53466B91C87F8B6A855FF"), résultat: long ("- 395")
]]
Exemple 4: Utilisation du $ dadiff dans MongoDB avec les différentes valeurs unitaires
Le décalage horaire mesuré en unités entiers est renvoyé par l'expression $ Dadiff. Une unité n'a pas de pièces fractionnaires. Il n'y a pas de semestre lors du comptage en années. Nous exécutons la requête de cette déclaration où l'argument «unité» de l'opérateur $ Dadiff est utilisé avec différentes valeurs. Nous créons le champ «Yearnit» au sein de l'opérateur de projet $ et utilisons l'opérateur $ DADIFF là-bas. L'opérateur $ Dadiff prend les valeurs par rapport aux arguments «startdate» et «enddate».
Notez que nous avons fixé la période «l'année» dans l'argument «unité». La différence entre les dates spécifiées est évaluée en fonction de l'unité de l'année. Après cela, nous avons un autre champ qui est «Monthunnit» où l'opérateur $ DADIFF est spécifié avec la valeur «Unité» «Mois». Ensuite, le champ «Dayunit» de l'opérateur de projet $ s'appelle le $ Dadiff avec la valeur «unité» comme «jour» pour mesurer la différence de période des dates avec l'unité de jour.
db.Projet.agrégat(
[
$ Project:
StartDate: "$ startdate",
EndDate: "$ enddate",
YearUnit:
$ Dadiff:
startDate: "$ startdate",
EndDate: "$ enddate",
Unité: "Année"
,
Monthunnit:
$ Dadiff:
startDate: "$ startdate",
EndDate: "$ enddate",
Unité: "mois"
,
Daysunit:
$ Dadiff:
startDate: "$ startdate",
EndDate: "$ enddate",
Unité: "Jour"
]]
)
Les différences de date sont renvoyées dans les valeurs unitaires données par l'opérateur $ Dadiff.
[
_id: ObjectId ("63C53466B91C87F8B6A855FC"),
StartDate: Isodate ("2020-01-05T00: 00: 00.000z "),
EndDate: Isodate ("2021-01-10T00: 00: 00.000z "),
YearUnit: Long ("1"),
Monthunnit: 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"),
Monthunnit: 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"),
Monthunnit: long ("12"),
Daysunit: Long ("341")
,
_id: ObjectId ("63C53466B91C87F8B6A855FF"),
StartDate: Isodate ("2022-05-01T00: 00: 00.000z "),
EndDate: Isodate ("2023-05-31T00: 00: 00.000z "),
YearUnit: Long ("1"),
Monthunnit: long ("12"),
Daysunit: Long ("395")
]]
Conclusion
L'article a exploré le nouvel opérateur MongoDB $ Dadiff où l'opération de différence est effectuée entre les deux dates. Nous avons utilisé l'opérateur $ DADAIFF pour obtenir la différence entre les valeurs des dates spécifiées. L'opérateur $ Dadiff prend les paramètres qui sont spécifiés avec les valeurs de date du document avec l'heure unitaire. Nous avons également exécuté quelques exemples où l'opérateur $ DADAIFF est utilisé dans différents cas pour retourner le résultat dans une période unitaire.