sql >> Databasteknik >  >> NoSQL >> Redis

Mongodb korsning med tidsintervall

du kan använda redis uppsättningar för detta användningsfall:

Om tidsluckorna alltid är i multiplar av 15 minuter kan du göra så här:

1) Ha en universell uppsättning som innehåller alla tidsluckor. Här multiplar av 15.

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

2) För varje medlem i laget har en separat uppsättning för de platser som är bokade för dem. För medlem 1 08:15-08:50 du måste förlova honom till 09:00 .

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

3) Gör samma sak för andra medlemmar också. medlem2 08:30-09:30

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

4) Nu för varje medlem kan du få gratisslots med

sdiff universal member_1

5) För den övergripande slots gratis. Du måste göra två operationer.

result = sinter member_1 member_2 ...
sdiff universal result

korsar alla medlemmars set kommer att ge tidsluckor där alla användare är upptagna. Så du kan inte tilldela dessa platser.

Genom att subtrahera (diff) operation med den universella uppsättningen får du de totala platserna som är fria att upptas.

Hoppas det här hjälper.




  1. mongokopia från en samling till en annan (på samma db)

  2. Redis typad klient

  3. Redis:Hur skär man en normal uppsättning med en sorterad uppsättning?

  4. Vilka MongoDB-användarprivilegier behöver jag för att lägga till en användare i en ny/annan mongodatabas?