go - 如何使用 mgo 在 golang 中编写 mongodb 搜索

标签 go 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 我假设您正在尝试使用文本索引/搜索,但在您的情况下这是行不通的。文本索引不支持部分内容。您仍然可以使用正则表达式来查找这些文档,但从性能角度来看,这可能不是一个明智的选择,除非您可以利用索引 - 在您的情况下不会发生这种情况。

不过,您可以通过以下方式实现您想要的:

id := "ket"
regex := bson.M{"$regex": bson.RegEx{Pattern: id}}
err = c.Find(bson.M{"hobby": regex}).All(&result)

关于go - 如何使用 mgo 在 golang 中编写 mongodb 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322736/

相关文章:

mongodb - 填充方法的 mgo 示例

go - 将 x509 certPool 转换为 pemBytes

mongodb - 如何在mgo(Go)中使用接口(interface)类型作为模型?

delphi - RSA 在 delphi(lockbox) 和 go1.5 之间加密/解密

google-chrome - GoDoc 标识符搜索浏览器界面

mongodb - 多个 session.Copy() 后 mgo 连接泄漏

mongodb - 监视 MongoDB 更改流

arrays - MongoDB slice 查询到golang

dictionary - channel map

reflection - 我可以在 Go 中使用反射创建一个新函数吗?