https://godoc.org/github.com/mongodb/mongo-go-driver我正在尝试动态创建聚合管道。例如,我想读取一段包含海洋的字符串。我试着把它们拆成碎片,但我找不到任何方法来追加元素。pipeline := bson.NewArray( bson.VC.DocumentFromElements( bson.EC.SubDocumentFromElements( "$match", bson.EC.SubDocumentFromElements("ocean", bson.EC.ArrayFromElements("$in", bson.VC.String("Pacific Ocean"), //bson.VC.String("Indian Ocean"), ), ), bson.EC.SubDocumentFromElements("callTypeName", bson.EC.ArrayFromElements("$in", bson.VC.String("Wookie"), bson.VC.String("Unknown 13"), ), ), ), ),)cur, err := collection.Aggregate(context.Background(), pipeline)
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
这个人要问的是在给定数据列表的情况下将数据动态插入到管道中。
我和我的团队正在开发的 vue 应用程序也遇到了同样的问题。使用您提供的数据,这是通用模板:
给定一片海洋
a := []string{"Pacific Ocean", "Indian Ocean"}
制作一个类型为 *bson.Value 的大小为 0 的切片
b := make([]*bson.Value, 0)
遍历海洋切片并将 bson 转换后的值附加到切片 b
for _, v := range a { b = append(b, bson.VC.String(v)) }
然后创建键值对,以便 mongo 可以查找匹配项
c := bson.EC.ArrayFromElements("$in", b...)
然后将 c 传递到管道中
pipeline := bson.NewArray( bson.VC.DocumentFromElements( bson.EC.SubDocumentFromElements( "$match", bson.EC.SubDocumentFromElements("ocean", c), ), ), )
这应该让您了解如何为 callTypeNames 动态管道
- 1 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消