Ale*_*xey 3 go mongodb mongo-go
我尝试使用嵌套运算符(OR/AND/...)创建 MongoDB 查询过滤器。但 lib 需要创建 abson.D
并向bson.E
其中传递元素。如果我需要放在OR/AND
里面AND/OR
- 我需要像这样放在bson.M + bson.D
里面:bson.D
filter := bson.M{"$and": bson.D{{"p", 10}, bson.M{"$or": bson.D{{"s", 30}, {"a", 1}}}}}
Run Code Online (Sandbox Code Playgroud)
..当然它不起作用:cannot use primitive.M literal (type primitive.M) as type primitive.E in slice literal
. 如果稍后我尝试... in []
在 a 中使用逻辑,可能会发生同样的问题bson.D
如何在 Go 和官方 MongoDB 驱动程序中创建此类嵌套查询?
重要的是$or
需要一个数组,即bson.A
. 也是$and
默认的,您不必指明。
您的过滤器可以这样定义:
filter := bson.D{
{"p", 10},
{"$or", bson.A{
bson.D{{"s", 30}},
bson.D{{"a", 10}},
}},
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用这个:
filter = bson.D{
{"p", 10},
{"$or", bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
}},
}
Run Code Online (Sandbox Code Playgroud)
或这个:
filter := bson.M{
"p": 10,
"$or": bson.A{
bson.M{"s": 30},
bson.M{"a": 10},
},
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5425 次 |
最近记录: |