MongoDB中的反向搜索词-包含关键字的数据库

MongoDB中的反向搜索词-包含关键字的数据库,mongodb,mongodb-query,Mongodb,Mongodb Query,在我的情况下,我的搜索词和数据库条目是相反的。我有一个包含关键字(通常为1或2个单词)的数据库,我有字符串(通常为3-5个单词),我想与我的数据库条目进行比较 例如,以下是保存在数据库集合中的两个文档(数以万计): { _id: 1, keyword: "John Smith" }, { _id: 2, keyword: "Apple" } 然后,我有以下字符串: "John Smith wins the award", "Apple.com", "Apple Keynote Presenta

在我的情况下,我的搜索词和数据库条目是相反的。我有一个包含关键字(通常为1或2个单词)的数据库,我有字符串(通常为3-5个单词),我想与我的数据库条目进行比较

例如,以下是保存在数据库集合中的两个文档(数以万计):

{ _id: 1, keyword: "John Smith" },
{ _id: 2, keyword: "Apple" }
然后,我有以下字符串:

"John Smith wins the award",
"Apple.com",
"Apple Keynote Presentation"
如您所见,我的搜索词和数据库条目是反向的。我想搜索数据库,以确定是否有一个文档的“关键字”属性包含在我的字符串中。注意:我一次处理一个字符串(如“Apple.com”),并提供了多个字符串,仅用于说明

我可以将所有文档从数据库中取出,通过循环遍历每个关键字来查看字符串是否包含关键字,但出于性能原因,如果可能的话,最好在数据库中找到查询它们的匹配项


有没有一种方法可以检查字符串是否包含关键字,而无需将关键字从数据库中取出?

您可以通过文本索引轻松地实现这一点。只需将文本索引添加到集合中,如下所示:

db.collection.createIndex({ keyword: "text" })
db.collection.find({ $text: { $search: 'John Smith wins the award' } })
然后发出如下文本搜索命令:

db.collection.createIndex({ keyword: "text" })
db.collection.find({ $text: { $search: 'John Smith wins the award' } })
解释它是如何工作的