$meta(投影)

适用对象: MongoDB vCore

$meta 投影运算符用于在查询结果中包含元数据。 它可用于在输出文档中包括元数据,例如文本搜索分数或其他计算值。

语法

使用 $meta 投影运算符的语法如下:

db.collection.find( {$text: { $search: <string> } },
    { field: { $meta: <metaDataKeyword> } 
    }
)

参数

说明
field 输出文档中包含元数据的字段的名称。
metaDataKeyword 包含常用关键字的元数据类型,如用于文本搜索分数的 textScore

示例

下面是一个示例,用于说明 $meta 投影运算符的用法。

示例 1:包括文本搜索分数

我们有一个名为 stores 的集合,我们希望在文本搜索查询的结果中包含文本搜索分数。

db.stores.createIndex({ "name": "text"});

db.stores.find(
    { $text: { $search: "Equipment Furniture Finds" } },
    { _id: 1, name: 1, score: { $meta: "textScore" } }
).sort({ score: { $meta: "textScore" } }).limit(2)

此查询从 stores 集合中返回符合文本搜索条件的文档,并包含一个包含文本搜索分数的 score 字段。

{
    "_id": "7a9aa41e-95bd-43c1-96cd-bcff0c3c33fb",
    "name": "Fabrikam, Inc",
    "score": 2
},
{
    "_id": "ee51cc4c-6770-4bb7-bb61-cd0cc44cb387",
    "name": "Proseware, Inc",
    "score": 2
}

限制

  • 如果未使用索引,则 { $meta: "indexKey" } 不返回任何内容。