在 Golang 中动态创建 MongoDB Pipeline
Posted
技术标签:
【中文标题】在 Golang 中动态创建 MongoDB Pipeline【英文标题】:Dynamically create MongoDB Pipeline in Golang 【发布时间】: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.PipelinematchStage)
.
.
我的问题是,假设我将 bson.D 值作为切片输入,如何动态构建此查询?具体来说,我提前知道了“featureA”的关键,并被喂了一片:
features := []string"string123", "string456", "string"789", "string012"
我知道这必须相对简单,但我已经为此绞尽脑汁好几个小时了,循环切片、json 编组/解组等。
【问题讨论】:
【参考方案1】:你可以这样做:
featureExpr:=bson.A
for _,f:=range features
featureExpr=append(featureExpr,bson.D"featureA",f)
matchStage := bson.D
"$match",bson.D"$or", featureExpr,
【讨论】:
哇!那是快速而简单的。非常感谢布拉克。那成功了。非常感谢。以上是关于在 Golang 中动态创建 MongoDB Pipeline的主要内容,如果未能解决你的问题,请参考以下文章
text 在Raspberry PI #linux上安装Golang
Golang GraphQL MongoDB 努力从数据库中获取日期和 ID
如何使用 golang 和 mgo 库在 mongodb 中创建文本索引?