如何使用给定的切片生成bson.A?我需要这个来进行动态查询。
我正在从mongo-go-driver alpha升级到beta 0.2.0,这已经成为我项目中的一个主要变化,因为API现在不同了。
https://godoc.org/github.com/mongodb/mongo-go-driver/bson
input := []string{"bar", "world"}
//expected output
bson.A{"bar", "world"}
如何使用给定的切片生成bson.A?我需要这个来进行动态查询。
我正在从mongo-go-driver alpha升级到beta 0.2.0,这已经成为我项目中的一个主要变化,因为API现在不同了。
https://godoc.org/github.com/mongodb/mongo-go-driver/bson
input := []string{"bar", "world"}
//expected output
bson.A{"bar", "world"}
4条答案
按热度按时间nlejzf6q1#
不知道你是否找到了你的答案,但我昨天和这个问题斗争了一个小时。
我不确定这能解决你的问题。我假设你试图从你的输入中构建一个过滤器。最终,当我试图传递数组时,我没有使用bson. A。
场景:试图构建一个过滤器,其中一个bson.D元素是一个数组。
我以为我需要使用BSON. A。
我最初的假设是:
其中
resourceStrings
是一个字符串切片。但是,这最终将构建一个类似于
FILTER : [ {resource [{$in [[Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]]}]}]
的过滤器我们想要的是:
FILTER : [{uuid 80} {action UpdateOrganization} {resource [{$in [Orgs::Organizations::1 Orgs::Organizations::* Orgs::Organizations Orgs::*]}]}]
如果我们传入一个字符串的文字数组,它将工作...
经过一些尝试和错误,我发现bson.D将直接接受数组。
最后我就这样解决了这个问题
从字面上看你的例子-如果你只是想把一个数组封送到一个bson.A尝试:
bson.A{input}
hfyxw5xn2#
bson.底层类型是
[]interface{}
我可以像切片一样使用
append
dsf9zpds3#
下面是我的代码,根据ID删除存在于另一个集合中的多个文档。
我们首先从一个集合中收集所有ID并添加到切片中。然后我们使用
DeleteMany()
删除另一个集合中的文档我展示了相关的代码,以保持代码的整洁。
Json
代码
f87krz0w4#