MongoDB Atlas搜索
Atlas Search使在MongoDB数据之上轻松构建基于关联的快速搜索功能成为可能。立即在MongoDB Atlas(我们完全托管的数据库即服务)上试用。
$text
¶$text
对用文本索引索引的字段的内容进行文本搜索。甲
$text
表达的语法如下:
在版本3.2中更改。
该$text
运营商接受带有以下字段的文本查询文件:
领域 | 类型 | 描述 |
---|---|---|
$search |
串 | MongoDB解析并用于查询文本索引的术语字符串。OR 除非指定为短语,否则MongoDB会对术语进行逻辑搜索。有关该字段的更多信息,请参见行为。 |
$language |
串 | 可选的。确定用于搜索的停用词列表以及词干分析器和分词器规则的语言。如果未指定,则搜索使用索引的默认语言。有关支持的语言,请参见“ 文本搜索语言”。 如果您将语言值指定为 |
$caseSensitive |
布尔值 | 可选的。一个布尔标志,用于启用或禁用区分大小写的搜索。默认为 有关更多信息,请参见不区分大小写。 3.2版中的新功能。 |
$diacriticSensitive |
布尔值 | 可选的。一个布尔标志,用于启用或禁用针对版本3文本索引的变音敏感搜索。默认为
针对较早版本的文本索引的文本搜索本质上是变音符号敏感的,并且不能是变音符号不敏感的。因此,该 有关更多信息,请参见变音符号不敏感。 3.2版中的新功能。 |
该$text
运营商,默认情况下,也没有返回结果的得分方面来分类的结果。有关按文本搜索分数排序的更多信息,请参阅
文本分数文档。
$text
表达式。$text
查询不能出现在$nor
表达式中。$text
查询不能出现在$elemMatch
查询表达式或$elemMatch
投影表达式中。$text
在$or
表达式中使用查询,$or
必须对数组中的所有子句都建立索引。hint()
如果查询包含$text
查询表达式,则无法使用。$natural
如果查询包含$text
表达式,则不能指定排序顺序。$text
需要特殊文本索引的表达式与需要不同类型特殊索引的查询运算符组合在一起。例如,您不能将$text
表达式与$near
运算符结合在一起。如果$text
在聚合中使用运算符,则以下限制也适用。
$search
字段¶在该$search
字段中,指定一个字符串,该字符串由
text
操作员解析并用于查询文本索引。
该text
运营商对待大部分标点符号的字符串作为分隔符,除了一个连字符减号(-
),其通过则无效条款或转义双引号\"
指定的短语。
在版本3.2中更改。
text
索引的早期版本对不带变音符号的拉丁字符不区分大小写;即为[A-z]
。$caseSensitive
选项¶要支持text
索引不区分大小写的区分大小写的搜索,请指定。$caseSensitive: true
以下示例假定一个在字段上articles
具有
版本3文本索引的集合subject
:
用以下文档填充集合:
如果搜索字符串是用空格分隔的字符串,则$text
运算符OR
将对每个术语执行逻辑搜索,并返回包含任何术语的文档。
以下查询指定$search
由空格分隔的三个术语的字符串:"bake coffee cake"
该查询返回的文档中包含bake
或
coffee
或 cake
位于索引subject
字段中,或更准确地说,包含这些单词的词干版本:
一个否定词是由一个减号作为前缀的一个术语-
。如果您否定一个术语,则$text
运算符将从结果中排除包含这些术语的文档。
以下示例搜索包含单词
coffee
但不包含术语shop
或更确切地说单词的词干版本的文档:
该查询返回以下文档:
使用表达式中的可选$language
字段$text
来指定一种语言,该语言确定停用词的列表以及搜索字符串的词干分析器和标记生成器的规则。
如果您将语言值指定为"none"
,则文本搜索将使用简单的标记化,其中没有停用词列表,也没有词干。
以下查询指定es
西班牙语(即西班牙语)作为确定标记,词干和停用词的语言:
该查询返回以下文档:
该$text
表达式还可以接受名称为的语言
spanish
。有关支持的语言,请参见文本搜索语言。
也可以看看