如何在mgo中进行文本搜索?

时间:2014-05-20 13:50:08

标签: mongodb go mgo

我正在尝试在名为“abc”

的字段中搜索“efg”
c.Find(bson.M{"$text": bson.M{"abc": "efg"}})

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

2 个答案:

答案 0 :(得分:4)

您正在生成{$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/

答案 1 :(得分:3)

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

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