$searchMeta阶段返回不同类型的元数据结果文档。
注意
如要对分片集合运行 $searchMeta 查询,您的集群必须运行 MongoDB v6.0 或更高版本。
语法
$searchMeta 管道阶段采用以下原型形式:
{ $searchMeta: { "index": "<index-name>", "<collector-name>"|"<operator-name>": { <collector-specification>|<operator-specification> }, "count": { <count-options> }, "returnScope": { "path": "<embedded-documents-field-to-retrieve>" } "returnStoredSource": true | false } }
字段
$searchMeta 阶段采用包含以下字段的文档:
字段 | 类型 | 必要性 | 说明 |
|---|---|---|---|
| 对象 | 可选的 | 用于查询的收集器的名称。您可以提供一个包含收集器特定选项的文档作为该字段的值。值必须为 |
| 对象 | Optional | 指定用于检索结果计数的计数选项的文档。要学习;了解更多信息,请参阅对MongoDB搜索结果进行计数。 |
| 字符串 | Optional | 要使用的MongoDB Search索引的名称。如果省略,则默认为 如果索引名称拼写错误或者指定的索引在集群上尚不存在,则MongoDB Search 不会返回结果。 |
| 对象 | 可选的 | 用于搜索的操作符名称。您可以提供一个包含操作符特定选项的文档作为该字段的值。 您必须指定此项或 |
| `` Object | Optional | Object that sets the context of the query to the specified embedded document field. You must also specify |
| 布尔 | 可选的 | Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from MongoDB Search. If omitted, defaults to 要了解详情,请参阅返回已存储源字段。 |
行为
$searchMeta 阶段必须是任何管道中的第一阶段。
元数据结果类型
$searchMeta 阶段返回的元数据结果文档的结构因结果类型而异。MongoDB Search 支持以下结果类型:
例子
假设 sample_mflix.movies 集合上有如下索引。
{ "mappings": { "dynamic": false, "fields": { "year": { "type": "number" } } } }
以下查询使用 $searchMeta 阶段搜索 1998 年上映的电影数量。
db.movies.aggregate([ { "$searchMeta": { "range": { "path": "year", "gte": 1998, "lt": 1999 }, "count": { "type": "total" } } } ])
[ { count: { total: Long("552") } } ]