如何使用 mgo 在 golang 中编写 mongodb 搜索
How to write mongodb search in golang using mgo
这是我的 JSON 文件:
[{
"name": "chetan",
"age": 23,
"hobby": ["cricket", "football"]
}, {
"name": "raj",
"age": 24,
"hobby": ["cricket", "golf"]
}]
这是我试过但没有按预期工作的 golang 代码。
id:= "ket"
c.EnsureIndexKey("hobby")
err = c.Find(bson.M{"$hobby": bson.M{"$search": id,},}).All(&result)
它给出错误:
$hobby exit status 1
来自 $search
我假设您正在尝试使用文本 index/search,但在您的情况下这是行不通的。文本索引不支持分词。您仍然可以使用正则表达式来查找这些文档,但在性能方面它可能不是一个明智的选择,除非您可以利用索引——在您的情况下这不会发生。
不过,您可以通过以下方式实现您想要的:
id := "ket"
regex := bson.M{"$regex": bson.RegEx{Pattern: id}}
err = c.Find(bson.M{"hobby": regex}).All(&result)
这是我的 JSON 文件:
[{
"name": "chetan",
"age": 23,
"hobby": ["cricket", "football"]
}, {
"name": "raj",
"age": 24,
"hobby": ["cricket", "golf"]
}]
这是我试过但没有按预期工作的 golang 代码。
id:= "ket"
c.EnsureIndexKey("hobby")
err = c.Find(bson.M{"$hobby": bson.M{"$search": id,},}).All(&result)
它给出错误:
$hobby exit status 1
来自 $search
我假设您正在尝试使用文本 index/search,但在您的情况下这是行不通的。文本索引不支持分词。您仍然可以使用正则表达式来查找这些文档,但在性能方面它可能不是一个明智的选择,除非您可以利用索引——在您的情况下这不会发生。
不过,您可以通过以下方式实现您想要的:
id := "ket"
regex := bson.M{"$regex": bson.RegEx{Pattern: id}}
err = c.Find(bson.M{"hobby": regex}).All(&result)