[mongodb] golang は mongodb に接続し、タイムスタンプに従って履歴データを削除します

コード

package main

import (
	"context"
	"fmt"
	"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"
	"log"
	"time"
)

func main() {
    
    
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()
	client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://<username>:<password>@<host>:<port>"))

	// 检查连接
	err := client.Ping(ctx, nil)
	if err != nil {
    
    
		log.Fatal("无法连接到 MongoDB:", err)
	}
	fmt.Println("成功连接到 MongoDB!")
	
	timestamp := time.Now().Add(-10 * time.Minute) // 十分钟之前
	docID := primitive.NewObjectIDFromTimestamp(timestamp)
	fmt.Println(docID.Hex())
	
	database := client.Database("database_name")
	collection := database.Collection("collection_name")
	filter := bson.M{
    
     // 比 特定时间戳小的都删除
		"_id": bson.M{
    
    
			"$lt": docID,
		},
	}
	collection.DeleteMany(ctx, filter)
}

説明する

  • <username>:<password>@<host>:<port>独自の mongodb 接続に置き換えます。
  • パスワードが設定されていない場合、接続情報には次のものが使用されます。mongodb://<host>:<port>
  • この例は、特定のデータベースの特定のコレクションについて 10 分前に生成されたすべてのドキュメントを削除することを意味します。

おすすめ

転載: blog.csdn.net/weixin_41093846/article/details/130744267