Mongo를 사용하여 Golang에서 지정된 기간 이후 문서 만료
Golang에서 mongo-go-driver는 지정된 기간 이후 문서를 자동으로 만료하는 기능을 제공합니다. 지정된 초 수. 그러나 일부 사용자에게는 이 기능이 의도한 대로 작동하지 않는 문제가 발생할 수 있습니다.
이 문제를 해결하려면 만료AfterSeconds 인덱스 생성을 위한 올바른 절차를 따르는 것이 중요합니다. 여기에는 문서를 삭제해야 하는 기간을 결정하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!