$meta

在本页面

  • $meta
    • 2.6 版的新功能。

$meta投影运算符为每个匹配的文档返回与查询关联的元数据(例如"textScore")。

$meta表达式具有以下语法:

{ $meta: <metaDataKeyword> }

$meta表达式可以将以下关键字指定为<metaDataKeyword>

KeywordDescriptionSort 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