|
|
|
@ -75,24 +75,24 @@ func NewGinMongoClient(config *GinMongoClientConfig) (*GinClient, error) {
|
|
|
|
|
c.log.mongo = true
|
|
|
|
|
|
|
|
|
|
// 创建时间序列集合
|
|
|
|
|
c.mongoCreateCollection()
|
|
|
|
|
c.mongoCreateCollection(ctx)
|
|
|
|
|
|
|
|
|
|
// 创建索引
|
|
|
|
|
c.mongoCreateIndexes()
|
|
|
|
|
c.mongoCreateIndexes(ctx)
|
|
|
|
|
|
|
|
|
|
return c, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 创建时间序列集合
|
|
|
|
|
func (c *GinClient) mongoCreateCollection() {
|
|
|
|
|
func (c *GinClient) mongoCreateCollection(ctx context.Context) {
|
|
|
|
|
var commandResult bson.M
|
|
|
|
|
commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(context.TODO(), bson.D{{
|
|
|
|
|
commandErr := c.mongoClient.Db.Database(c.mongoConfig.databaseName).RunCommand(ctx, bson.D{{
|
|
|
|
|
"listCollections", 1,
|
|
|
|
|
}}).Decode(&commandResult)
|
|
|
|
|
if commandErr != nil {
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Error("检查时间序列集合:", commandErr)
|
|
|
|
|
} else {
|
|
|
|
|
err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(context.TODO(), c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("request_time")))
|
|
|
|
|
err := c.mongoClient.Db.Database(c.mongoConfig.databaseName).CreateCollection(ctx, c.mongoConfig.collectionName, options.CreateCollection().SetTimeSeriesOptions(options.TimeSeries().SetTimeField("log_time")))
|
|
|
|
|
if err != nil {
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Error("创建时间序列集合:", err)
|
|
|
|
|
}
|
|
|
|
@ -100,80 +100,84 @@ func (c *GinClient) mongoCreateCollection() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 创建索引
|
|
|
|
|
func (c *GinClient) mongoCreateIndexes() {
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
func (c *GinClient) mongoCreateIndexes(ctx context.Context) {
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"trace_id", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"log_time", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_time", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_method", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_proto", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip_country", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip_region", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip_province", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip_city", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"request_ip_isp", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"response_time", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"response_code", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"system_host_name", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"system_inside_ip", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"system_os", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"system_arch", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"system_cpu_quantity", 1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"go_version", -1},
|
|
|
|
|
}}))
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(context.TODO(), mongo.IndexModel{
|
|
|
|
|
c.zapLog.WithLogger().Sugar().Infof(c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).Indexes().CreateOne(ctx, mongo.IndexModel{
|
|
|
|
|
Keys: bson.D{
|
|
|
|
|
{"sdk_version", -1},
|
|
|
|
|
}}))
|
|
|
|
@ -182,8 +186,9 @@ func (c *GinClient) mongoCreateIndexes() {
|
|
|
|
|
// 模型结构体
|
|
|
|
|
type ginMongoLog struct {
|
|
|
|
|
LogId primitive.ObjectID `json:"log_id,omitempty" bson:"_id,omitempty"` //【记录】编号
|
|
|
|
|
TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【系统】跟踪编号
|
|
|
|
|
RequestTime primitive.DateTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间
|
|
|
|
|
LogTime primitive.DateTime `json:"log_time,omitempty" bson:"log_time,omitempty"` //【记录】时间
|
|
|
|
|
TraceId string `json:"trace_id,omitempty" bson:"trace_id,omitempty"` //【记录】跟踪编号
|
|
|
|
|
RequestTime dorm.BsonTime `json:"request_time,omitempty" bson:"request_time,omitempty"` //【请求】时间
|
|
|
|
|
RequestUri string `json:"request_uri,omitempty" bson:"request_uri,omitempty"` //【请求】请求链接 域名+路径+参数
|
|
|
|
|
RequestUrl string `json:"request_url,omitempty" bson:"request_url,omitempty"` //【请求】请求链接 域名+路径
|
|
|
|
|
RequestApi string `json:"request_api,omitempty" bson:"request_api,omitempty"` //【请求】请求接口 路径
|
|
|
|
@ -200,7 +205,7 @@ type ginMongoLog struct {
|
|
|
|
|
RequestIpCity string `json:"request_ip_city,omitempty" bson:"request_ip_city,omitempty"` //【请求】请求客户端城市
|
|
|
|
|
RequestIpIsp string `json:"request_ip_isp,omitempty" bson:"request_ip_isp,omitempty"` //【请求】请求客户端运营商
|
|
|
|
|
RequestHeader interface{} `json:"request_header,omitempty" bson:"request_header,omitempty"` //【请求】请求头
|
|
|
|
|
ResponseTime primitive.DateTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间
|
|
|
|
|
ResponseTime dorm.BsonTime `json:"response_time,omitempty" bson:"response_time,omitempty"` //【返回】时间
|
|
|
|
|
ResponseCode int `json:"response_code,omitempty" bson:"response_code,omitempty"` //【返回】状态码
|
|
|
|
|
ResponseMsg string `json:"response_msg,omitempty" bson:"response_msg,omitempty"` //【返回】描述
|
|
|
|
|
ResponseData interface{} `json:"response_data,omitempty" bson:"response_data,omitempty"` //【返回】数据
|
|
|
|
@ -217,17 +222,14 @@ type ginMongoLog struct {
|
|
|
|
|
// 记录日志
|
|
|
|
|
func (c *GinClient) mongoRecord(mongoLog ginMongoLog) (err error) {
|
|
|
|
|
|
|
|
|
|
mongoLog.SystemHostName = c.mongoConfig.hostname
|
|
|
|
|
mongoLog.SystemInsideIp = c.mongoConfig.insideIp
|
|
|
|
|
mongoLog.GoVersion = c.mongoConfig.goVersion
|
|
|
|
|
|
|
|
|
|
mongoLog.SdkVersion = Version
|
|
|
|
|
|
|
|
|
|
mongoLog.SystemOs = c.config.os
|
|
|
|
|
mongoLog.SystemArch = c.config.arch
|
|
|
|
|
mongoLog.SystemCpuQuantity = c.config.maxProCs
|
|
|
|
|
|
|
|
|
|
mongoLog.LogId = primitive.NewObjectID()
|
|
|
|
|
mongoLog.SystemHostName = c.mongoConfig.hostname //【系统】主机名
|
|
|
|
|
mongoLog.SystemInsideIp = c.mongoConfig.insideIp //【系统】内网ip
|
|
|
|
|
mongoLog.GoVersion = c.mongoConfig.goVersion //【程序】Go版本
|
|
|
|
|
mongoLog.SdkVersion = Version //【程序】Sdk版本
|
|
|
|
|
mongoLog.SystemOs = c.config.os //【系统】系统类型
|
|
|
|
|
mongoLog.SystemArch = c.config.arch //【系统】系统架构
|
|
|
|
|
mongoLog.SystemCpuQuantity = c.config.maxProCs //【系统】CPU核数
|
|
|
|
|
mongoLog.LogId = primitive.NewObjectID() //【记录】编号
|
|
|
|
|
|
|
|
|
|
_, err = c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).InsertOne(mongoLog)
|
|
|
|
|
if err != nil {
|
|
|
|
@ -244,8 +246,9 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data := ginMongoLog{
|
|
|
|
|
TraceId: traceId, //【系统】跟踪编号
|
|
|
|
|
RequestTime: primitive.NewDateTimeFromTime(requestTime), //【请求】时间
|
|
|
|
|
TraceId: traceId, //【记录】跟踪编号
|
|
|
|
|
LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间
|
|
|
|
|
RequestTime: dorm.BsonTime(requestTime), //【请求】时间
|
|
|
|
|
RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接
|
|
|
|
|
RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口
|
|
|
|
|
RequestMethod: ginCtx.Request.Method, //【请求】请求方式
|
|
|
|
@ -260,7 +263,7 @@ func (c *GinClient) mongoRecordJson(ginCtx *gin.Context, traceId string, request
|
|
|
|
|
RequestIpCity: requestClientIpCity, //【请求】请求客户端城市
|
|
|
|
|
RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商
|
|
|
|
|
RequestHeader: ginCtx.Request.Header, //【请求】请求头
|
|
|
|
|
ResponseTime: primitive.NewDateTimeFromTime(gotime.Current().Time), //【返回】时间
|
|
|
|
|
ResponseTime: dorm.BsonTime(gotime.Current().Time), //【返回】时间
|
|
|
|
|
ResponseCode: responseCode, //【返回】状态码
|
|
|
|
|
ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据
|
|
|
|
|
CostTime: endTime - startTime, //【系统】花费时间
|
|
|
|
@ -296,8 +299,9 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
data := ginMongoLog{
|
|
|
|
|
TraceId: traceId, //【系统】跟踪编号
|
|
|
|
|
RequestTime: primitive.NewDateTimeFromTime(requestTime), //【请求】时间
|
|
|
|
|
TraceId: traceId, //【记录】跟踪编号
|
|
|
|
|
LogTime: primitive.NewDateTimeFromTime(requestTime), //【记录】时间
|
|
|
|
|
RequestTime: dorm.BsonTime(requestTime), //【请求】时间
|
|
|
|
|
RequestUrl: ginCtx.Request.RequestURI, //【请求】请求链接
|
|
|
|
|
RequestApi: gourl.UriFilterExcludeQueryString(ginCtx.Request.RequestURI), //【请求】请求接口
|
|
|
|
|
RequestMethod: ginCtx.Request.Method, //【请求】请求方式
|
|
|
|
@ -312,7 +316,7 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT
|
|
|
|
|
RequestIpCity: requestClientIpCity, //【请求】请求客户端城市
|
|
|
|
|
RequestIpIsp: requestClientIpIsp, //【请求】请求客户端运营商
|
|
|
|
|
RequestHeader: ginCtx.Request.Header, //【请求】请求头
|
|
|
|
|
ResponseTime: primitive.NewDateTimeFromTime(gotime.Current().Time), //【返回】时间
|
|
|
|
|
ResponseTime: dorm.BsonTime(gotime.Current().Time), //【返回】时间
|
|
|
|
|
ResponseCode: responseCode, //【返回】状态码
|
|
|
|
|
ResponseData: c.jsonUnmarshal(responseBody), //【返回】数据
|
|
|
|
|
CostTime: endTime - startTime, //【系统】花费时间
|
|
|
|
@ -342,8 +346,14 @@ func (c *GinClient) mongoRecordXml(ginCtx *gin.Context, traceId string, requestT
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// MongoQuery 查询
|
|
|
|
|
func (c *GinClient) MongoQuery() *dorm.MongoClient {
|
|
|
|
|
return c.mongoClient.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName)
|
|
|
|
|
func (c *GinClient) MongoQuery(ctx context.Context) *mongo.Collection {
|
|
|
|
|
return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// MongoDelete 删除
|
|
|
|
|
func (c *GinClient) MongoDelete(ctx context.Context, hour int64) (*mongo.DeleteResult, error) {
|
|
|
|
|
filter := bson.D{{"log_time", bson.D{{"$lt", primitive.NewDateTimeFromTime(gotime.Current().BeforeHour(hour).Time)}}}}
|
|
|
|
|
return c.mongoClient.Db.Database(c.mongoConfig.databaseName).Collection(c.mongoConfig.collectionName).DeleteMany(ctx, filter)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// MongoMiddleware 中间件
|
|
|
|
|