Golang Go语言中操作 mongodb 执行聚合查询,并根据时间过滤

发布于 1周前 作者 yuanlaile 来自 Go语言

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

3 回复

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来实现。以下是一个基本的示例代码,展示了如何进行这种操作:

  1. 首先,确保你已经安装了MongoDB Go驱动程序:

    go get go.mongodb.org/mongo-driver/mongo
    go get go.mongodb.org/mongo-driver/mongo/options
    
  2. 然后,编写代码来连接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阶段来根据时间过滤文档,并遍历结果。

回到顶部