On this page
$meta
在本页面
$meta
- 2.6 版的新功能。
$meta投影运算符为每个匹配的文档返回与查询关联的元数据(例如"textScore"
)。
$meta表达式具有以下语法:
{ $meta: <metaDataKeyword> }
$meta表达式可以将以下关键字指定为<metaDataKeyword>
:
Keyword | Description | Sort Order |
---|---|---|
"textScore" |
返回与每个匹配文档的相应$text查询关联的分数。Literals 分数表示文档与搜索字词匹配的程度。如果未与$text查询一起使用,则返回得分 0. | Descending |
Behaviors
$meta表达式可以是projection文档的一部分,也可以是sort()表达式的一部分:
{ <projectedFieldName>: { $meta: "textScore" } }
views上的db.collection.find()个操作不支持$meta个投影运算符。
预计的字段名称
<projectedFieldName>
的名称中不能包含点(.
)。
如果匹配的文档中已存在指定的<projectedFieldName>
,则在结果集中,现有字段将以$meta值而不是存储的值返回。
Projection
$meta表达式可以在projection文档中使用,如下所示:
db.collection.find(
<query>,
{ score: { $meta: "textScore" } }
)
$meta表达式指定字段是否包含在结果集中,而不指定其他字段的排除。
$meta表达式可以是投影文档的一部分,该文档指定其他字段的排除项或指定其他字段的包括项。
元数据返回有关<query>
操作处理的信息。这样,分配给<projectedFieldName>
的返回元数据在<query>
表达式内没有任何意义。也就是说,如果<projectedFieldName>
的文档中不存在任何字段,则在<projectedFieldName>
上指定条件作为<query>
的一部分类似于在不存在的字段上指定条件。
Sort
$meta表达式可以是sort()表达式的一部分,如下所示:
db.collection.find(
<query>,
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
要将$meta表达式包含在sort()表达式中,相同 $meta表达式(包括<projectedFieldName>
)必须出现在投影文档中。指定的元数据确定排序 Sequences。例如,"textScore"
元数据按降序排序。
有关其他示例,请参见带有附加查询和排序表达式的文本搜索。
Examples
有关"textScore"
个投影和排序的示例,请参见$text。