Установка TTL для истечения срока действия данных из коллекции - PullRequest
0 голосов
/ 11 марта 2019

Есть ли правильный способ настроить самоуничтожение данных с помощью ключа, используя официальный драйвер mongo ? Единственный метод, который я нашел в модуле Mongo-драйвера, это ExpireAfterSeconds , но я не уверен, как правильно его использовать. Вот репозиторий с тем, что готово на данный момент.

1 Ответ

1 голос
/ 11 марта 2019

Вам необходимо создать индекс ttl для поля, которое необходимо удалить через n секунд.

В приведенном ниже фрагменте кода создано поле expirationTime, для которого можно установить значение ttl.Через 60 секунд после истечения срока действия, установленного в записи, запись будет удалена.

Ниже приведен код для создания индекса TTL:

var ttl *int32
    *ttl = 60
    keys := bsonx.Doc{{Key: "expirationTime", Value: bsonx.Int32(int32(1))}}
    idx := mongo.IndexModel{Keys: keys, Options: &options.IndexOptions{ExpireAfterSeconds: ttl}}
    _, err := collection.Indexes().CreateOne(context.Background(), idx)
    if err != nil {
        fmt.Println("Error occurred while creating index", err)
    } else {
        fmt.Println("Index creation success")
    }
...