Redis
 sql >> Base de données >  >> NoSQL >> Redis

Intersection Mongodb avec plage de temps

vous pouvez utiliser les ensembles de redis pour ce cas d'utilisation :

Si les créneaux horaires sont toujours en multiples de 15 minutes vous pouvez faire comme ceci :

1) Avoir un ensemble universel contenant toutes les tranches horaires. Ici multiples de 15.

sadd universal 08:00 08:15 08:30 08:45 09:00 ...

2) Chaque membre de l'équipe dispose d'un ensemble séparé pour les créneaux réservés pour lui. Pour le membre1 08:15-08:50 vous devez le fiancer jusqu'à 09h00 .

sadd member_1 08:15 08:30 08:45 09:00

3) Faites de même pour les autres membres également. membre2 08:30-09:30

sadd member_2 08:30 08:45 09:00 09:30

4) Maintenant, pour chaque membre, vous pouvez obtenir les créneaux gratuits en utilisant

sdiff universal member_1

5) Pour l'ensemble des créneaux libres. Vous devez faire deux opérations.

result = sinter member_1 member_2 ...
sdiff universal result

l'intersection de tous les ensembles de membres donnera les tranches horaires où tous les utilisateurs sont occupés. Vous ne pouvez donc pas attribuer ces créneaux.

Faire une opération de soustraction (diff) avec l'ensemble universel vous donnera l'ensemble des emplacements libres d'être occupés.

J'espère que cela t'aides.