为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 mongo golang 驱动程序中使用聚合 $facet 查询

如何在 mongo golang 驱动程序中使用聚合 $facet 查询

Go
宝慕林4294392 2022-06-01 18:24:14
如何使用 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" } ],        }    }])
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

要在 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)

}


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号