You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go mongo-driver执行全文检索报错Unknown operator: $meta正确写法咨询

问题原因

你出现报错的核心是混淆了MongoDB find方法的过滤条件参数和投影参数:
原生Mongo Shell的find方法第一个入参是查询过滤规则,第二个入参是控制返回字段的投影配置,你把返回得分的score: {$meta: "textScore"}投影配置写到了Go代码的过滤条件中,导致MongoDB把这段逻辑当成查询条件解析,识别不到该场景下的$meta操作符。

修正后的代码
// 过滤条件仅保留查询规则,不要写入投影配置
filter := bson.D{
    {"$and", bson.A{
        bson.M{"available": true},
        bson.M{"$text": bson.M{
            "$search": query,
        }},
    }},
}

opts := options.Find()
// 投影配置通过SetProjection方法单独设置
opts.SetProjection(bson.M{
    "score": bson.M{"$meta": "textScore"},
})
// 排序和分页逻辑保持不变
opts.SetSort(bson.M{"score": bson.M{"$meta": "textScore"}})
opts.SetLimit(1)

cursor, err := s.collection.Find(ctx, filter, opts)
if err != nil {
    log.Println(err)
}
额外注意事项

请提前确认station集合已经针对要搜索的字段创建了文本索引,否则$text查询会直接报错。


内容的提问来源于stack exchange,提问作者Kitsor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:06:09