代码之家  ›  专栏  ›  技术社区  ›  Prateek Narendra

MongoDB返回错误-未能为或下的文本生成解决方案-或下的其他非文本子句,或必须对其进行索引

  •  0
  • Prateek Narendra  · 技术社区  · 7 年前

    我试图通过Java驱动程序对MangGDB进行查询,而我得到了这个错误。

    "Query failed with error code 2 and error message 'error processing query: ns=Application.Team limit=10Tree: $or
    _id == \"TEA000000006\"
    TEXT : query=anonoymous, language=english, caseSensitive=0, diacriticSensitive=0, tag=NULL
    Sort: { name: 1 }
    Proj: { _id: 1, name: 1 }
    Collation: { locale: \"en_US\", strength: 1 }
     planner returned error: Failed to produce a solution for TEXT under OR - 
     other non-TEXT clauses under OR have to be indexed as well.' on server 
     localhost:27017"
    

    我认为索引似乎有些问题。 如果我不给 sort TEXT ,似乎有效。两者共同造成问题

    我需要查询返回在文本搜索中找到的记录,或者如果ID在传递的列表中(在本例中是te0000006)

    我的指数是-

    { 
        "v" : 2, 
        "name" : "myIndex", 
        "ns" : "Application.Team", 
        "weights" : {
             "$**" : 1, 
             "_id" : 1, 
             "name" : 1
        }, 
        "default_language" : "english", 
        "language_override" : "language", 
        "textIndexVersion" : 3
    }
    
    { 
        "v" : NumberInt(2), 
        "key" : {
            "_id" : NumberInt(1)
        }, 
        "name" : "_id_", 
        "ns" : "Application.Team"
    }
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Alex Blex    7 年前

    您需要重新创建文本索引 _id name . $** 覆盖所有字段。 如果只需要这两个字段中的文本索引,请删除 $** 从索引中,应该是 {"_id": "text", "name":"text"}

        2
  •  0
  •   Prateek Narendra    6 年前

    这实际上是不可能的。参考- https://jira.mongodb.org/browse/SERVER-13803

    推荐文章