【mongodb】golang连接mongodb,根据时间戳删除历史数据

该代码示例展示了一个Go程序,它连接到MongoDB数据库,使用时间戳创建一个ObjectID,然后删除指定集合中10分钟前生成的所有文档。程序首先建立连接,检查连接是否成功,然后定义过滤器以删除_id小于给定时间戳的文档。
摘要由CSDN通过智能技术生成

代码

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>
  • 示例表示 删除 特定dababase 的 特定 collection 的 10 分钟之前生成的所有文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值