首页 > 后端开发 > Golang > 为什么我的 MongoDB Go Driver 正则表达式查询没有返回任何结果?

为什么我的 MongoDB Go Driver 正则表达式查询没有返回任何结果?

Susan Sarandon
发布: 2024-11-02 21:35:02
原创
890 人浏览过

Why is my MongoDB Go Driver regex query not returning any results?

使用 Go 驱动程序在 MongoDB 中进行正则表达式查询

MongoDB 提供了强大的查询机制,允许您根据各种条件检索文档。其中一个标准是正则表达式,它通常用于模式匹配和子字符串搜索。

遇到的问题:

尝试使用 MongoDB Go 驱动程序执行时在正则表达式查询中,用户遇到了未返回预期结果的问题。尽管遵循了文档的示例,光标仍然为空。

根本原因:

此问题的根本原因在于primitive.Regex 结构的构造。此结构体的 Pattern 字段需要一个不带前导斜杠和尾随斜杠的正则表达式模式。

解决方案:

要解决此问题,请删除正则表达式模式周围的斜杠在 Primitive.Regex 结构中。这是更正后的代码:

<code class="go">filter := bson.D{{"text", primitive.Regex{Pattern: "he", Options: ""}}}</code>
登录后复制

示例:

使用此更正后的代码,以下查询现在应该返回预期结果:

<code class="go">ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

cur, err := coll.Find(ctx, filter)
if err != nil {
    fmt.Println(err)
    return
}

i := 0
for cur.Next(ctx) {
    i = i + 1
}
fmt.Println("Found", i, "elements")</code>
登录后复制

通过删除正则表达式模式周围的斜杠,primitive.Regex 结构现在可以正确匹配文档“文本”字段中所需的子字符串并返回预期结果。

以上是为什么我的 MongoDB Go Driver 正则表达式查询没有返回任何结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板