Используйте redis, и его сеты - sadd. В сет и добавляйте всех пользователей для данного документа. Сам ключ будет ID документа, а мемберы - ID пользователей
127.0.0.1:6379> SADD doc:1234 "uid:1234"
(integer) 1
127.0.0.1:6379> SADD doc:1234 "uid:1235"
(integer) 1
127.0.0.1:6379> SADD doc:1234 "uid:1237"
(integer) 1
127.0.0.1:6379> SMEMBERS doc:1234
1) "uid:1237"
2) "uid:1235"
3) "uid:1234"
127.0.0.1:6379>
Ну и как бонус, ставьте TTL на ключ, например на 12 дней. Через 12 дней у пользователей все права к документу пропадут.
127.0.0.1:6379> EXPIRE doc:1234 1036800
(integer) 1
127.0.0.1:6379> ttl doc:1234
(integer) 1036789
127.0.0.1:6379> ttl doc:1234
(integer) 1036786
127.0.0.1:6379> ttl doc:1234
(integer) 1036784
127.0.0.1:6379>
Можно и наоборот, пользователем сделать ключ, а значениями доступные документы. Можно и еще как нибудь поизвращаться.