Mongo を使用した Golang での指定された期間後にドキュメントを期限切れにする
Golang では、mongo-go-driver は、指定された期間後にドキュメントを自動的に期限切れにする機能を提供します。指定された秒数。ただし、一部のユーザーは、この機能が意図したとおりに機能しないという問題に遭遇する可能性があります。
これを解決するには、expireAfterSeconds インデックスを作成するための正しい手順に従うことが重要です。これには、ドキュメントを削除するまでの期間を決定する TTL (Time-to-Live) インデックスの設定が含まれます。
期限切れドキュメントのサンプル コード
<code class="golang">package main import ( "context" "fmt" "log" "time" "github.com/Pallinder/go-randomdata" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { ctx := context.TODO() client, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017")) if err != nil { log.Fatal(err) } err = client.Connect(ctx) if err != nil { log.Fatal(err) } db := client.Database("LADB") col := db.Collection("LACOLL") // Add an index to the collection with an expireAfterSeconds option model := mongo.IndexModel{ Keys: bson.M{"createdAt": 1}, Options: options.Index().SetExpireAfterSeconds(1), } ind, err := col.Indexes().CreateOne(ctx, model) if err != nil { log.Fatal(err) } fmt.Println(ind) // Insert some documents with createdAt timestamp for i := 0; i < 5; i++ { name := randomdata.SillyName() res, err := col.InsertOne(ctx, NFT{Timestamp: time.Now(), CreatedAt: time.Now(), Name: name}) if err != nil { log.Fatal(err) } fmt.Println("Inserted", name, "with ID", res.InsertedID) time.Sleep(1 * time.Second) } // Find all documents in the collection cursor, err := col.Find(ctx, bson.M{}, nil) if err != nil { log.Fatal(err) } var datas []NFT if err = cursor.All(ctx, &datas); err != nil { log.Fatal(err) } // Note that there may be a delay in deleting expired documents (up to 60 seconds) fmt.Println(datas) } type NFT struct { ID primitive.ObjectID `bson:"_id,omitempty"` CreatedAt time.Time `bson:"createdAt,omitempty"` Timestamp time.Time `bson:"timestamp,omitempty"` Name string `bson:"name,omitempty"` }</code>
注: 期限切れのドキュメントを削除するための MongoDB のバックグラウンド タスクは 60 秒ごとに実行されます。したがって、期限切れのドキュメントの削除には遅延が発生する可能性があり、最大 60 秒かかる可能性があります。
以上がGo-Mongo-Driver を使用して MongoDB でドキュメントの有効期限を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。