登录
首页 >  Golang >  Go问答

使用 mongo-go-driver 创建动态过滤器

来源:stackoverflow

时间:2024-04-17 15:54:33 261浏览 收藏

本篇文章向大家介绍《使用 mongo-go-driver 创建动态过滤器》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

我想使用 mongo-go-driver 创建一个动态过滤器。

例如,我有这个文档:

{
"_id":"5d1231380a2a2b39a99c3ed1"},
"name":"flower.png",
"colors":["#ffffff","#212121","#999999","#dbdbdb","#ff5252"],
},
{
"_id":"5d1231380a2a2b39a99c3ed0"},
"name":"image of go.jpg",
"colors":["#dedede","#dfdfdf","#dddddd","#e0e0e0","#e2e2e2"],
},
{
"_id":"5d1231380a2a2b39a99c3ecf"},
"name":"bolket rulez.png",
"colors":["#000000","#010101","#020202","#030303","#040404"],
},
{
"_id":"5d1231380a2a2b39a99c3ecf"},
"name":"bolket photo.png",
"colors":["#ffffff","#010101","#020202","#030303","#040404"],
}

现在我想要名称中包含“bolket”且颜色为“#ffffff”的所有文档。

我尝试过使用这个过滤器:

filter := make(bson.D, 2)

    if f.Name != "" {
        filter = append(filter, bson.E{Key: "name", Value: bson.M{"$text": bson.M{"$search": f.Name}}})
    }

    if f.Color != "" {
        filter = append(filter, bson.E{Key: "colors", Value: bson.M{"$in": f.Color}})
    }

但是使用这个过滤器我有这个错误:(badvalue)未知运算符:$text

如何创建动态过滤器???


解决方案


查询操作 $text 搜索文档上的文本索引字段,您无法使用 $text 进行单字段搜索

假设您已经在 name 上创建了文本索引,然后尝试:

if f.Name != "" {
        filter = append(filter, bson.E{Key: "$text", Value: bson.M{"$search": f.Name}})
    }

本篇关于《使用 mongo-go-driver 创建动态过滤器》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

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