Dokumen Tamat Tempoh Selepas Tempoh Ditentukan di Golang Menggunakan Mongo
Di Golang, mongo-go-driver menyediakan keupayaan untuk tamat tempoh dokumen secara automatik selepas bilangan saat tertentu. Walau bagaimanapun, sesetengah pengguna mungkin menghadapi masalah dengan ciri ini tidak berfungsi seperti yang diharapkan.
Untuk menyelesaikan masalah ini, adalah penting untuk mematuhi prosedur yang betul untuk mencipta indeks expireAfterSeconds. Ini melibatkan penyediaan indeks TTL (Time-to-Live) yang menentukan tempoh masa selepas dokumen harus dipadamkan.
Kod Contoh untuk Dokumen Tamat Tempoh
<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>
Nota: Tugas latar belakang MongoDB untuk mengalih keluar dokumen tamat tempoh berjalan setiap 60 saat. Oleh itu, mungkin terdapat kelewatan dalam memadamkan dokumen yang telah tamat tempoh, berkemungkinan sehingga 60 saat.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Tamat Tempoh Dokumen dalam MongoDB Menggunakan Go-Mongo-Driver?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!