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

如何使用 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" } ],

        }

    }

])


宝慕林4294392
浏览 205回答 1
1回答

白猪掌柜的

要在 go lang MongoDB 驱动程序中运行$facet,请使用以下代码,只需替换您的连接字符串和数据库名称package mainimport (    "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)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go