【问题标题】:Dynamically create MongoDB Pipeline in Golang在 Golang 中动态创建 MongoDB Pipeline
【发布时间】:2022-01-10 03:14:09
【问题描述】:

所有, 我正在使用 MongoDB/Golang 驱动程序并使用以下 Golang 代码来构建管道。我已经成功地对此进行了测试,并且可以正常工作:

.
.
matchStage := bson.D{
                    {"$match",bson.D{
                       {"$or", bson.A{
                            bson.D{{"featureA","string123"}},
                            bson.D{{"featureA","string456"}},
                            bson.D{{"featureA","string789"}},
                            bson.D{{"featureA","string012"}},
                       }},
                    }},
}
filterCursor, err := collection.Aggregate(ctx, mongo.Pipeline{matchStage})
.
.

我的问题是,假设我将 bson.D 值作为切片输入,如何动态构建此查询?具体来说,我提前知道了“featureA”的关键,并被喂了一片:

features := []string{"string123", "string456", "string"789", "string012"}

我知道这必须相对简单,但我已经为此绞尽脑汁好几个小时了,循环切片、json 编组/解组等。

【问题讨论】:

    标签: arrays mongodb go mongodb-query


    【解决方案1】:

    你可以这样做:

    featureExpr:=bson.A{}
    for _,f:=range features {
        featureExpr=append(featureExpr,bson.D{{"featureA",f}})
    }
    matchStage := bson.D{
                        {"$match",bson.D{{"$or", featureExpr}},
    }
    

    【讨论】:

    • 哇!那是快速而简单的。非常感谢布拉克。那成功了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多