在Mongo中进行文本搜索:查找包含空格的商品名称

时间:2018-06-29 08:27:26

标签: mongodb

我在MongoDB中有一个看起来像这样的集合(为清楚起见,省略了所有其他字段)

{ "name" : "Toyota Camry" },
{ "name" : "Fort Taurus" },
{ "name" : "Ford Fiesta" }

我想做的是找出这些项目出现“全包”的句子。例如,文本:

  • 去年,我和我的朋友租了一辆福特嘉年华
  • 6月在墨西哥,有大量死者嘉年华

我需要某种查询MongoDB的方式,因此它将为我提供福特嘉年华上的匹配项,但不会提供 Fiesta

上的匹配项

我曾尝试使用文本索引,但这会返回所有内容。理想情况下,该概念是

“采用这一行文本,看看它是否包含数据库中任何已存储的项目”

更好:

如果我能获得最长的比赛(即,如果有“福特嘉年华”和“福特嘉年华涡轮”,那么我只希望后者在文本内)。

有什么好主意吗?这可行吗?

1 个答案:

答案 0 :(得分:1)

您可以通过创建通配符文本索引来搜索具体内容

db.collection.createIndex( { "$**": "text" } )

然后执行以下操作

{"$text" : {"$search" : "\"<insert term here>\""}}

这将仅返回与您的文本完全匹配的字符串。