MongoDB - 无法将查询规范化:BadValue 未知操作符:$meta。

14

这种情况发生在我的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}
1个回答

16

结果证明我只是把括号放错了位置...应该是这样写的。

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

2
这种错误也会发生在我在Mongo shell中玩耍时,像这样愚蠢地调用一个像find()的方法,而查询本意是为了update(),例如db.col.find({name:/something/},{$set: { name: 'something else'}}); // you can't use $set in find(), can't canonicalize query - aesede
那肯定行不通,它是一个畸形的对象。你一定会得到一个错误 Error: Line 2: Unexpected token { - Robert Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接