我有以下查找检索textScore排序结果的查询,但是如何应用标准只返回文本分数大于1的文档?
db.foods.find(
{ $text: { $search: "red blue green" } },
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
答案 0 :(得分:6)
使用 aggregation framework 通过执行 $match
管道操作来获取文本分数大于1的文档关于术语" red"或者"蓝色"或"绿色",然后是 $project
运算符管道,用于投影得分字段,然后执行另一个 $match
管道operattion只返回分数大于1.0的文档。 " textScore" metadata 可用于包含 $match
$text
阶段之后的预测,排序和条件>操作:
db.foods.aggregate([
{
"$match": {
"$text": {
"$search": "red blue green"
}
}
},
{
"$project": {
"_id": 0,
"score": {
"$meta": "textScore"
}
}
},
{
"$match": {
"score": { "$gt": 1.0 }
}
}
])