在 MongoDB 中,复杂的查询过滤器可能涉及嵌套逻辑运算符,例如 OR 和 AND。 mongo-go-driver 允许您以编程方式构造这些过滤器。
使用嵌套逻辑运算符时,了解驱动程序所需的结构至关重要。例如,$or 运算符需要一个条件数组,表示为 bson.A。另一方面,$and 运算符是默认运算符,不需要显式指定。
请考虑以下示例,您希望使用嵌套在 AND 条件中的 OR 条件创建过滤器:
filter := bson.M{ "p": 10, "$and": bson.D{{"s", 30}, bson.M{"$or": bson.D{{"a", 1}}}}} }
此代码会导致错误,因为它尝试在 AND 条件内混合 bson.M 和 bson.D。要解决此问题,您需要使用 bson.A 作为 $or 条件并删除不必要的 $and 运算符:
filter := bson.D{ {"p", 10}, {"$or", bson.A{ bson.D{{"s", 30}}, bson.D{{"a", 1}}, }}, }
或者,您可以使用以下简化语法:
filter := bson.M{ "p": 10, "$or": bson.A{ bson.M{"s": 30}, bson.M{"a": 10}, }, }
此语法创建与前面的示例相同的查询过滤器。语法的选择取决于您的偏好和查询的复杂性。
以上是如何在 mongo-go-driver 中构建嵌套 OR/AND 查询过滤器?的详细内容。更多信息请关注PHP中文网其他相关文章!