Golang Go语言中操作 mongodb 执行聚合查询,并根据时间过滤
Golang Go语言中操作 mongodb 执行聚合查询,并根据时间过滤
现在我写的 pipe 是这样:
pipe := []bson.M{ {"$match": bson.M{ "updateTime":bson.M{"$gt":"2020-06-03T09:21:22.878+08:00"}}}, {"$group": bson.M{ "_id": "$sn", "count": bson.M{"$sum": 1}, }}, }
但是返回是空,时间没有问题,mongo 里这个字段的格式是:ISODate("2020-06-03T09:21:22.878+08:00") 如果去掉 match,只留 group,返回正常,说明程序是没问题,纠结于这里 match 如何写
更多关于Golang Go语言中操作 mongodb 执行聚合查询,并根据时间过滤的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
primitive.NewDateTimeFromTime?
更多关于Golang Go语言中操作 mongodb 执行聚合查询,并根据时间过滤的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
搞定了,直接传 time.Now()不需要格式化
在Go语言中操作MongoDB并执行聚合查询,同时根据时间进行过滤,可以通过MongoDB官方的Go驱动程序go.mongodb.org/mongo-driver/mongo
来实现。以下是一个基本的示例代码,展示了如何进行这种操作:
-
首先,确保你已经安装了MongoDB Go驱动程序:
go get go.mongodb.org/mongo-driver/mongo go get go.mongodb.org/mongo-driver/mongo/options
-
然后,编写代码来连接MongoDB并执行聚合查询:
package main import ( "context" "fmt" "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI("mongodb://localhost:27017")) if err != nil { panic(err) } defer client.Disconnect(context.TODO()) collection := client.Database("yourdb").Collection("yourcollection") pipeline := bson.D{ {Key: "$match", Value: bson.D{ {Key: "yourtimefield", Value: bson.M{"$gte": time.Now().Add(-time.Hour)}}}, // 添加其他聚合阶段,如$group, $sort等 } cursor, err := collection.Aggregate(context.TODO(), pipeline) if err != nil { panic(err) } defer cursor.Close(context.TODO()) for cursor.Next(context.TODO()) { var result bson.M cursor.Decode(&result) fmt.Println(result) } }
这个示例展示了如何连接到MongoDB,定义一个聚合管道,其中包括一个$match
阶段来根据时间过滤文档,并遍历结果。