mongodb - mongo-go-driver:嵌套的 OR/AND 查询过滤器
问题描述
我尝试使用嵌套运算符 (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}}}}}
..当然它不起作用: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}},
}},
}
你也可以使用这个:
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},
},
}
推荐阅读
- html - 我可以使用 react w/oa 服务器并作为 js 文件吗?
- c - 文件传输/将二进制数据写入 Unix 上 C/C++ 中的 TCP 套接字连接
- python - 尝试将字符串插入字符串时,Python f-string name“blabla is not defined”错误
- excel - 遍历表列
- ios - 使用较新的模拟设备时 Xcode 模拟器会变慢吗?
- firebase - 也部署了我的 Next.JS 应用程序 firebase 托管,但我在 firebase 控制台中看不到任何功能
- spring - 微服务:内部服务的安全和架构问题
- sql - 修剪数据并放在单独的列中
- javascript - JQuery Easing 在 asp.net mvc 项目中不起作用
- python - 多次遍历三个列表,在每次迭代中从列表中依次选择一个元素