mongodb之mongo-go-驱动程序 : nested OR/AND query filter
mate10pro
阅读:54
2025-06-02 22:19:02
评论:0
我尝试使用嵌套运算符 (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}}}}}
.. 当然它不起作用:不能在 slice literal 中使用 primitive.M literal(类型 primitive.M)作为 type primitive.E。如果稍后我尝试在 bson.D
... in [] 逻辑,可能会发生同样的问题
如何在 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},
},
}
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



