mongodb - MGO : Can't canonicalize query: BadValue unknown operator: $meta

标签 mongodb go mongodb-query mgo

我正在使用 MGO 与 mongodb 进行通信。 我想在集合中搜索,并按搜索分数对结果进行排序。

collection.Find(bson.M{
    "$text": bson.M{"$search": "mysearch"},
    "score": bson.M{"$meta": "textScore"},
})

但我收到此错误:

Can't canonicalize query: BadValue unknown operator: $meta (status code : 500)

当我只尝试使用 $text 时,它有效。

我使用与这里相同的 bson 结构: MongoDB - Can't canonicalize query: BadValue unknown operator: $meta

谢谢

最佳答案

这里的问题是您使用 BSON“ map ”作为参数,并将“投影”作为“查询”的一部分。而是使用 .Select()投影链接方法:

collection.Find(
    bson.M{ "$text": bson.M{ "$search": "mysearch" } }
).Select( 
    bson.M{ "score": bson.M{ "$meta": "textScore" } }
)

就像标准 API 示例一样,“查询”和“投影”部分彼此“分离”。

关于mongodb - MGO : Can't canonicalize query: BadValue unknown operator: $meta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607964/

相关文章:

go - 如何将新的 ServeMux 组合成更大的结构?

php - mongo php 库 updateOne 和 insertOne 损坏集合

node.js - 如何获取引用的Object的所有值?

arrays - 从文档数组中删除最旧的 N 个元素

python - MongoDB:链查找()

go - 如何将修改后的Go Packet数据包序列化为真实IP数据包

node.js - Mongoose Auth Error : command find requires authentication. 但我做到了

Golang slice 附加和重新分配

java - Mongodb聚合查询批量返回

java - Mongodb聚合命令转java代码