复合索引MongoDB
我使用了MongoDb服务器版本:4.2.0。 我有复合索引MongoDB:复合索引MongoDB,mongodb,Mongodb,我使用了MongoDb服务器版本:4.2.0。 我有复合索引MongoDB: db.fop.createIndex( { "id":1, "ADDRESS": "text"}) 它的工作原理是: db.fop.find({"id":{$in:[1]},$text: {$search: "AnyTextSearch"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}}) 这不起作用: db.fop.find({"
db.fop.createIndex( { "id":1, "ADDRESS": "text"})
它的工作原理是:
db.fop.find({"id":{$in:[1]},$text: {$search: "AnyTextSearch"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}})
这不起作用:
db.fop.find({"id":{$in:[1,2]},$text: {$search: "AnyTextSearch"}}, {score: {$meta: "textScore"}}).sort({score:{$meta:"textScore"}})
我得到一个错误:
Error: error: {
"ok" : 0,
"errmsg" : "error processing query: ns=osint.fopTree: $and\n id $in [ 1.0 2.0 ]\n TEXT : query=AnyTextSearch, language=english, caseSensitive=0, diacriticSensitive=0, tag=NULL\nSort: { score: { $meta: \"textScore\" } }\nProj: { score: { $meta: \"textScore\" } }\n planner returned error :: caused by :: failed to use text index to satisfy $text query (if text index is compound, are equality predicates given for all prefix fields?)",
"code" : 2,
"codeName" : "BadValue"}
如何提出正确的请求?请告诉我“它起作用”和“这不起作用”是什么意思。错误:错误:{“确定”:0,“错误消息”:“错误处理查询:ns=osint.fopTree:$和\n id$in[1.0 2.0]\n TEXT:query=AnyTextSearch,language=english,区分大小写=0,区分重音=0,标记=NULL\n排序:{分数:{$meta:\“textScore\”}\nProj:{$score:{$meta:\“textScore\”}\n计划者返回错误::原因::未能使用文本索引满足$text查询(如果文本索引是复合的,是否为所有前缀字段提供了相等谓词?,“代码”:2,“代码名”:“BadValue”}解释如下:。第二点是原因:“如果复合文本索引包含文本索引键之前的键,则要执行$text搜索,查询谓词必须包含前面键上的相等匹配条件。”@prasad_uuu但它确实在前面的键上包含相等匹配条件。似乎
$in
如果与一个值一起工作,则应该与两个值一起工作。我可以使用$or吗?请告诉“it works”和“This not works”是什么意思。错误:错误:{“ok”:0,“errmsg”:“错误处理查询:ns=osint.fopTree:$and\n id$in”[1.0 2.0]\n TEXT:query=AnyTextSearch,language=english,caseSensitive=0,diacriticSensitive=0,tag=NULL\n请求者:{score:{$meta:\'textScore\'}}\n请求者:{score:{$meta:\'textScore\'}}\n计划者返回错误::原因::未能使用文本索引满足$TEXT query(如果文本索引是复合的,是否为所有前缀字段提供了相等谓词?,“code”:2,“codeName”:“BadValue”}以下是解释:。第二点是原因:如果复合文本索引包含文本索引键前面的键,则要执行$text搜索,查询谓词必须在前面的键上包含相等匹配条件。“@prasad_uu但它确实在前面的键上包含相等匹配条件。中的$如果与一个值一起工作,则应该与两个值一起工作。我可以使用$or吗?