全文搜索过滤文本分数

Moo*_*ter 5 mongodb

我有以下查找检索textScore排序结果的查询,但是如何应用标准只返回文本分数大于1的文档?

db.foods.find(
   { $text: { $search: "red blue green" } },
   { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
Run Code Online (Sandbox Code Playgroud)

chr*_*dam 6

使用聚合框架通过执行$match管道操作来获取文本分数大于1的文档,该操作将匹配术语"红色"或"蓝色"或"绿色",然后是运行$project管道,用于投影得分字段,然后执行另一个$match管道操作以仅返回分数大于1.0的那些文档."textScore" 元数据可用于$match包含$text操作的阶段之后的投影,排序和条件:

db.foods.aggregate([
    { 
        "$match": { 
               "$text": { 
                     "$search": "red blue green" 
                } 
         } 
    },
    { 
         "$project": { 
               "_id": 0, 
               "score": { 
                     "$meta": "textScore" 
                } 
          } 
     },
     { 
          "$match": { 
                "score": { "$gt": 1.0 } 
           } 
     }
])
Run Code Online (Sandbox Code Playgroud)