sql >> Base de Datos >  >> NoSQL >> Redis

Intersección de Mongodb con rango de tiempo

puede usar conjuntos de redis para este caso de uso:

Si los intervalos de tiempo siempre son múltiplos de 15 minutos, puede hacer lo siguiente:

1) Disponer de un conjunto universal que contenga todas las franjas horarias. Aquí múltiplos de 15.

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

2) Para cada miembro del equipo, tenga un juego separado para los espacios reservados para ellos. Para el miembro 1 08:15-08:50 tienes que comprometerlo hasta las 09:00 .

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

3) Haz lo mismo con otros miembros también. miembro2 08:30-09:30

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

4) Ahora, para cada miembro, puede obtener las tragamonedas gratis usando

sdiff universal member_1

5) Para el total de tragamonedas gratis. Tienes que hacer dos operaciones.

result = sinter member_1 member_2 ...
sdiff universal result

la intersección de todo el conjunto de miembros dará los intervalos de tiempo en los que todos los usuarios están ocupados. Así que no puedes asignar esos espacios.

Hacer una operación de resta (diferencia) con el conjunto universal le dará las ranuras generales que están libres para ser ocupadas.

Espero que esto ayude.