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