Je travaille sur la gestion des versions, nous avons des documents basés sur UUIDs
et jobUuids
et jobUuids
sont les documents associés à l'utilisateur qui travaille actuellement. J'ai quelques requêtes agrégées sur ces collections que je dois mettre à jour sur la base des UUIDs de travail,
Les résultats récupérés par la requête agrégée doivent être tels que,
- si les utilisateurs actuels
jobUuid
n'existe pas, le document de base avecjobUuid: "default"
sera retourné (le document sans jobUuid), - si l'uuid du travail existe, seul le document est renvoyé.
J'ai un $match
utilisé pour obtenir ces documents sur la base de certaines conditions, à partir de ces documents, je dois filtrer les documents sur la base des conditions ci-dessus, et un exemple est montré ci-dessous,
Les données ressemblent à ceci :
[
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"name": "adam",
"jobUuid": "default",
},
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "adam"
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"name": "eve",
"jobUuid": "default",
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "eve"
},
{
"uuid": "26cba689-7eb6-4a9e-a04e-24ede0309e50",
"name": "john",
"jobUuid": "default",
}
]
Résultats pour "jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12"
devrait être :
[
{
"uuid": "5cdb5a10-4f9b-4886-98c1-31d9889dd943",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "adam"
},
{
"uuid": "b745baff-312b-4d53-9438-ae28358539dc",
"jobUuid": "d275781f-ed7f-4ce4-8f7e-a82e0e9c8f12",
"name": "eve"
},
{
"uuid": "26cba689-7eb6-4a9e-a04e-24ede0309e50",
"name": "john",
"jobUuid": "default",
}
]
Sur la base des conditions mentionnées ci-dessus, est-il possible de filtrer le document dans la requête agrégée pour extraire le document d'un uuid de travail spécifique ?
Edit 1 : J'ai obtenu la solution suivante, qui fonctionne bien, je veux une meilleure solution, éliminant toutes ces étapes imbriquées.
Edit 2 : J'ai mis à jour les données avec les UUIDs réels et j'ai juste inclus seulement le name
comme autre domaine, nous avons n
nombre de champs qu'il n'est pas pertinent d'inclure ici mais qui sont nécessaires à la fin (à mentionner pour ceux qui veulent utiliser la projection sur tous les champs).