参考 > 资料模型 > 数据模型示例和模式 > 模型特定的应用程序上下文 > 建模数据以支持关键字搜索
注意
关键字搜索是不一样的文本搜索和全文检索,并没有提供所产生或其他的文字处理功能。有关更多信息,请参见关键字索引的局限性。
在2.4中,MongoDB提供了文本搜索功能。有关更多信息,请参见 文本索引。
如果您的应用程序需要对包含文本的字段的内容执行查询,则可以对文本执行完全匹配,也可以
$regex
使用正则表达式模式匹配。但是,对于许多文本操作,这些方法不能满足应用程序要求。
此模式描述了一种使用MongoDB支持关键字搜索以支持应用程序搜索功能的方法,该方法使用存储在与文本字段相同的文档中的数组中的关键字。结合多关键字索引,此模式可以支持应用程序的关键字搜索操作。
要将结构添加到文档中以支持基于关键字的查询,请在文档中创建一个数组字段,然后将关键字作为字符串添加到数组中。然后,您可以在数组上创建多键索引,并创建从数组中选择值的查询。
例
给定要提供基于主题的搜索的库卷的集合。对于每个卷,您都添加数组topics
,并添加给定卷所需的任意多个关键字。
对于该Moby-Dick
卷,您可能具有以下文档:
然后,在topics
数组上创建一个多键索引:
多键索引为topics
数组中的每个关键字创建单独的索引条目。例如,索引包含的一个条目whaling
和的另一个条目
allegory
。
然后,您将根据关键字进行查询。例如:
注意
具有大量元素的数组,例如具有数百或数千个关键字的元素,将在插入时产生更高的索引成本。