我尝试使用嵌套操作符(OR/AND/...)创建一个MongoDB查询过滤器。但是lib需要创建一个bson.D并将bson.E元素传递给它。如果我需要在AND/OR中使用OR/AND -我需要将bson.M + bson.D放在bson.D中,如下所示:
filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}。。当然,它不能工作:cannot use primitive.M literal (type primitive.M) as type primitive.E in slice literal。如果稍后我尝试在bson.D中使用... in []逻辑,可能也会出现同样的问题
如何在Go和官方MongoDB驱动中创建这样的嵌套查询?
发布于 2020-04-01 19:55:01
重要的是,$or需要一个数组,即bson.A。而且$and是默认的,你不需要指明。
您的筛选器可以定义为:
filter := bson.D{
{"p", 10},
{"$or", bson.A{
bson.D{{"s", 30}},
bson.D{{"a", 10}},
}},
}您还可以使用以下命令:
filter = bson.D{
{"p", 10},
{"$or", bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
}},
}或者这样:
filter := bson.M{
"p": 10,
"$or": bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
},
}https://stackoverflow.com/questions/60969262
复制相似问题