【问题标题】:How to use aggregate $facet query with mongo golang driver如何在 mongo golang 驱动程序中使用聚合 $facet 查询
【发布时间】:2020-09-01 00:39:40
【问题描述】:
  1. 如何使用 mongo golang 驱动程序将以下查询转换为管道
db.transFront.aggregate([
{
        $facet: {
            query1: [ { $match: { appName:"app-38" }}, { $count: "count" }],
            query2: [ { $match: { appName:"app-43" }}, { $count: "count" } ],
            query3: [ { $match: { appName:"app--1" }}, { $count: "count" } ],
        }
    }
])

【问题讨论】:

    标签: mongodb go


    【解决方案1】:

    要在 go lang MongoDB 驱动程序中运行 $facet,请使用以下代码,只需替换您的连接字符串和数据库名称

    package main
    
    import (
        "context"
        "time"
        "fmt"
        "go.mongodb.org/mongo-driver/bson"
        "go.mongodb.org/mongo-driver/mongo"
        "go.mongodb.org/mongo-driver/mongo/options"
    )
    
    func main() {
        ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
        client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb_connect_string"))
        if err != nil {
            panic(err)
        }
        defer client.Disconnect(ctx)
    
        database := client.Database("testdb")
        transFront := database.Collection("transFront")
    
    
    
        query1 := bson.A{bson.D{{"$match", bson.D{{"appName", "app-38"}}}}, bson.D{{"$count", "count"}}}
        query2 := bson.A{bson.D{{"$match", bson.D{{"appName", "app-43"}}}}, bson.D{{"$count", "count"}}}
        query3 := bson.A{bson.D{{"$match", bson.D{{"appName", "app--1"}}}}, bson.D{{"$count", "count"}}}
    
        facetStage := bson.D{{"$facet", bson.D{{"query1", query1}, {"query2", query2}, {"query3", query3}}}}
    
        showInfoCursor, err := transFront.Aggregate(ctx, mongo.Pipeline{facetStage})
        if err != nil {
                panic(err)
        }
        var showsWithInfo []bson.M
        if err = showInfoCursor.All(ctx, &showsWithInfo); err != nil {
                panic(err)
        }
    
        fmt.Println(showsWithInfo)
    }
    

    【讨论】:

    • 乐于助人:)
    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多