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

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

Susan Sarandon
Susan Sarandon原创
2024-11-02 21:35:02789浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn