mongodb - MongoDB Facet 错误管道需要文本分数元数据,但没有可用的文本分数
问题描述
我创建了一个 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
}
]
}
}
])
除了类别之外,管道中还存在另外两个输出字段,但类似于上面管道中概述的结构。每当我运行此管道时,我都会收到错误消息:“管道需要文本分数元数据,但没有可用的文本分数”
此错误仅在使用构面管道时发生。单独运行每个管道阶段可以完美运行。
如果您对此有任何想法,请随时分享
谢谢!
解决方案
这已在groups.google.com/forum/#!topic/mongodb-user/Amozaj74prI中得到解答
总之,需要的是匹配阶段出现在管道的开头,而不是出现在每个方面阶段:
db.books.aggregate( [
{ $match: {$text: {$search: "Pattern"}}},
{ $addFields: {score: {$meta: "textScore"}}},
{ $facet: ... }
])
推荐阅读
- android - 当编辑器嵌套在 Xamarin.Android 的 ScrollView 中时,复制/剪切/粘贴不可用
- python - 有没有办法在 Python3.8 中使用 rgb 颜色?
- google-coral - 如何用电池为 Coral edge-tpu 开发板供电
- c# - IIS 8.5 中的默认 RSACryptoServiceProvider 不支持 SHA256 哈希
- android - android studio java.lang.ArrayIndexOutOfBoundsException: 长度=1;索引=1
- ios - 链接依赖的 API 调用
- java - C 与 Java 中的内存分配
- datatable - 检测 SqlDataAdapter 填充方法何时完成
- android - 如何创建可供我的 android 应用程序使用的共享文件夹?
- javascript - 如何在 javascript 的另一个函数中使用函数的变量?