MongoDB Facet Error管道需要文本评分元数据,但是没有文本评分可用

时间:2018-10-23 16:18:13

标签: mongodb

我创建了一个mongodb多面管道,以下是以下内容的子集:

    db.books.aggregate( [
    {
        $facet: {
            "categories": [
                {
                    $match: {
                        $text: { $search: "Pattern" }
                    }
                }, 
                {
                    $group: {
                        _id: "$Category",
                        count: {
                            $sum: 1
                        }
                    }
                },
                {
                    $sort: {
                        "count": -1
                    }
                },
                {
                    $project: {
                        "score": { "$meta": "textScore"},
                        "Category": "$_id",
                        "_id": 0,
                        "count": 1
                    }
                },
                {
                    $limit: 10
                }
            ]
        }
    }
])

管道中除类别外还存在其他两个输出字段,但它们类似于上面管道中概述的结构。 每当我运行此管道时,都会出现错误:“管道需要文本分数元数据,但是没有文本分数可用”

仅当使用构面管道时才会发生此错误。单独运行每个管道阶段都可以完美运行。

如果对此有任何想法,请随时分享

谢谢!

1 个答案:

答案 0 :(得分:0)

此问题已在groups.google.com/forum/#!topic/mongodb-user/Amozaj74prI

中回答

总而言之,所需的是匹配阶段出现在管道的开头,而不是出现在每个方面:

db.books.aggregate( [
    { $match: {$text: {$search: "Pattern"}}},
    { $addFields: {score: {$meta: "textScore"}}},
    { $facet: ... }
])