Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复合索引MongoDB_Mongodb - Fatal编程技术网

复合索引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({"

我使用了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({"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吗?