$search
语法
$search
管道阶段采用以下原型形式:
{ $search: { "index": "<index-name>", "<operator-name>"|"<collector-name>": { <operator-specification>|<collector-specification> }, "highlight": { <highlight-options> }, "concurrent": true | false, "count": { <count-options> }, "searchAfter"|"searchBefore": "<encoded-token>", "scoreDetails": true| false, "sort": { <fields-to-sort>: 1 | -1 }, "returnStoredSource": true | false, "tracking": { <tracking-option> } } }
字段
$search
阶段采用包含以下字段的文档:
字段 | 类型 | 必要性 | 说明 |
---|---|---|---|
| 对象 | 可选的 | 用于查询的收集器名称。您可以提供一个包含收集器特定选项的文档作为该字段的值。必须提供此项或 |
| 布尔 | Optional | |
| 对象 | Optional | 文件,用于指定检索结果计数的计数选项。 要了解更多信息,请参阅 Count Atlas 搜索结果。 |
| 对象 | Optional | 指定在原始上下文中显示搜索词的高亮选项的文档。 |
| 字符串 | Optional | 要使用的 Atlas Search 索引的名称。如果省略,则默认值为 如果将索引命名为 如果您写错索引名称,或者指定的索引在集群上尚不存在,则 Atlas Search 不会返回结果。 |
| 对象 | 可选的 | |
| 布尔 | Optional | 标志,指定是对后端数据库执行完整文档查找,还是直接从 Atlas Search 仅返回存储的源字段。如果省略,则默认值为 |
| 字符串 | Optional | |
| 字符串 | Optional | |
| 布尔 | Optional | |
| 对象 | Optional | 文档,指定按升序或降序对 Atlas Search 结果进行排序的字段。您可以按日期、数字(整数、浮点数和 double)和字符串值排序。要了解详情,请参阅对 Atlas Search 结果进行排序。 |
| 对象 | Optional | 指定用于检索搜索词相关分析信息的跟踪选项的文档。 警告This is now deprecated. The official end-of-life and complete removal of support will take effect on December 5, 2025. Therefore, Atlas will no longer collect query data for display in the Atlas UI starting on this date and the UI for this feature will be removed. If you have any questions or need further assistance, contact support or your Account Executive. |
行为
聚合变量
$search
仅返回查询结果。$search
查询的元数据结果保存在 $$SEARCH_META
聚合变量中。您可以使用 $$SEARCH_META
变量查看 $search
查询的元数据结果。
$$SEARCH_META
聚合变量可以用在任何管道中 $search
阶段之后的任何地方,但不能用在任何管道中 $lookup
或 $unionWith
阶段之后。从 MongoDB 6.0 开始,$$SEARCH_META
聚合变量不能在 $searchMeta
阶段之后的任何后续阶段使用。
例子
假设 sample_mflix.movies
集合上有如下索引。
{ "mappings": { "dynamic": false, "fields": { "released": { "type": "date" } } } }
以下查询使用 $search
阶段搜索在 2011 年 9 月 01 日前后上映的电影。查询包括:
$project
阶段,用来排除文档中除title
和released
之外的所有字段。$facet
阶段,将输出:docs
字段,其中包含由前5
项搜索结果组成的数组meta
值为$$SEARCH_META
变量的字段
db.movies.aggregate([ { "$search": { "near": { "path": "released", "origin": ISODate("2011-09-01T00:00:00.000+00:00"), "pivot": 7776000000 } } }, { $project: { "_id": 0, "title": 1, "released": 1 } }, { "$limit": 5 }, { "$facet": { "docs": [], "meta": [ {"$replaceWith": "$$SEARCH_META"}, {"$limit": 1} ] } } ])
{ "docs" : [ { "title" : "Submarino", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Devil's Playground", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Bag It", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Dos", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "We Were Here", "released" : ISODate("2011-09-01T00:00:00Z") } ], "meta" : [ { "count" : { "lowerBound" : NumberLong(17373) } } ] }
要了解有关 $$SEARCH_META
变量及其用法的更多信息,请参阅: