我创建了一个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
}
]
}
}
])
管道中除类别外还存在其他两个输出字段,但它们类似于上面管道中概述的结构。 每当我运行此管道时,都会出现错误:“管道需要文本分数元数据,但是没有文本分数可用”
仅当使用构面管道时才会发生此错误。单独运行每个管道阶段都可以完美运行。
如果对此有任何想法,请随时分享
谢谢!
答案 0 :(得分:0)
此问题已在groups.google.com/forum/#!topic/mongodb-user/Amozaj74prI
中回答总而言之,所需的是匹配阶段出现在管道的开头,而不是出现在每个方面:
db.books.aggregate( [
{ $match: {$text: {$search: "Pattern"}}},
{ $addFields: {score: {$meta: "textScore"}}},
{ $facet: ... }
])