登录
首页 >  Golang >  Go问答

Golang Mongo使用$in过滤器查询时出现错误:(BadValue)未知顶级运算符:$in

来源:stackoverflow

时间:2024-02-14 20:39:21 338浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Golang Mongo使用$in过滤器查询时出现错误:(BadValue)未知顶级运算符:$in》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在尝试从 mongodb 获取详细信息,其中特定属性的值为 a 或 b。 例如, 在我的集合 test(attr_a, attr_b, attr_c) 中获取 attr_c 值为“x”或“y”的记录。

过滤查询:

filter := bson.M{"Attr_A": "123", "Attr_B": "456",
        "$in": bson.A{bson.D{{"Attr_C", "x"}},
            bson.D{{"Attr_C", "y"}}}}
result := repo.DBPlug.Get("Test", filter)

我得到的错误是,

(badvalue) 未知的顶级运算符:$in。如果您的字段名称以“$”符号开头,请考虑使用 $getfield 或 $setfield。


正确答案


您应该为 $in 操作指定字段名称。 由于 json 过滤器查询应如下所示:

find({"attr_a": "123", "attr_b": "456", "attr_c": {$in: ["x","y"]}})

我想在 bson 中应该是这样的:

filter := bson.m{"attr_a": "123", "attr_b": "456",
        "attr_c": bson.m{"$in": bson.a{"x","y"}}}

或者类似的东西:

filter := bson.m{"attr_a": "123", "attr_b": "456",
          bson.d{{"attr_c", bson.d{{"$in", bson.a{"x","y"}}}}}
          }

或者:

filter := bson.D{{"Attr_A": "123"}, {"Attr_B": "456"},
            {bson.D{{"Attr_C", bson.D{{"$in", bson.A{"x","y"}}}
            }}
          }}

由于这是一个过滤器,因此使用 bson.m 或 bson.d 取决于您的选择 - 在这种情况下没有区别。查看elaboration

今天关于《Golang Mongo使用$in过滤器查询时出现错误:(BadValue)未知顶级运算符:$in》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>