How to do text search in mgo?

huangapple go评论83阅读模式
英文:

How to do text search in mgo?

问题

我正在尝试在名为"abc"的字段中搜索"efg"。

c.Find(bson.M{"$text": bson.M{"abc": "efg"}})

c是Collection对象。我没有得到任何结果。我做错了什么?

英文:

I'm trying to search "efg" in field named "abc"

c.Find(bson.M{"$text": bson.M{"abc": "efg"}})

c is Collection object. I'm not getting any result. What am I doing wrong?

答案1

得分: 5

你正在生成{$text:{abc:"efg"}},但是你的查询应该像这样:

{$text:{$search:"efg"}}

所以尝试更新你的代码为:

c.EnsureIndexKey("abc")
c.Find(bson.M{"$text": bson.M{"$search": "efg"}})

请记住,要使用$text进行搜索,你需要指定一个索引。查看这个文档,它解释了如何使用它:http://docs.mongodb.org/manual/reference/operator/query/text/

英文:

You are generating {$text:{abc:"efg"}}, but your query should look like this:
{$text:{$search:"efg"}}

So try updating your code to:

c.EnsureIndexKey("abc")
c.Find(bson.M{"$text": bson.M{"$search": "efg"}})

Keep in mind that to search with $text, you need to specify an index. Check out this document that explains how to use it: http://docs.mongodb.org/manual/reference/operator/query/text/

答案2

得分: 2

使用$regex(选项i表示不区分大小写)
示例:

c.Find(bson.M{"abc": &bson.RegEx{Pattern: "efg", Options: "i"}})
英文:

use $regex(option i for case insensitive)
example:

c.Find(bson.M{"abc": &bson.RegEx{Pattern: "efg", Options: "i"}})

huangapple
  • 本文由 发表于 2014年5月20日 21:50:07
  • 转载请务必保留本文链接:https://go.coder-hub.com/23761689.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定