英文:
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"}})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论