【问题标题】:MongoDB - Can't canonicalize query: BadValue unknown operator: $metaMongoDB - 无法规范化查询:BadValue 未知运算符:$meta
【发布时间】:2014-07-01 15:17:57
【问题描述】:

这在 2.6.1 中发生在我身上 - 所以,如果有人陷入这个错误,我想我会写出答案。

第一个命令运行良好,但第二个却不行。

db.test.find({$text: {$search: 'york'}} )

db.test.find({$text: {$search: 'york'}, score: {$meta: 'textScore'}} )

并抛出下面的错误

{"$err": "Can't canonicalize query: BadValue unknown operator: $meta", "code": 17287}

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    原来我只是把括号放在了错误的地方……它应该读到的。

    //This works
    db.test.find(
        { $text: { $search: 'york' } },
        { score: { $meta: 'textScore' } }
    );
    

    【讨论】:

    • 这种错误也会发生在我愚蠢地调用像find()这样的方法时,在mongo shell中播放时使用update()的查询,比如db.col.find({name:/something/},{$set: { name: 'something else'}}); // you can't use $set in find(), can't canonicalize query
    • 这不可能,它是一个格式错误的对象。你肯定会收到一个错误Error: Line 2: Unexpected token {
    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 2015-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多