gpt4 book ai didi

Mongodb错误 "failed to use text index to satisfy $text query"

转载 作者:行者123 更新时间:2023-12-02 04:49:53 24 4
gpt4 key购买 nike

我正在尝试使用全文搜索。这样设置索引

myRootSchema.index({ "_type": 1, "$**": "text" }); 

其中 _type 是 discriminatorKey,myRootSchema 是 4 个继承模式的父模式。

我收到此错误

{
"name": "MongoError",
"message": "error processing query: ns=MYDB.caseNotesTree: TEXT : query=title, language=english, caseSensitive=0, diacriticSensitive=0, tag=NULL\nSort: {}\nProj: {}\n planner returned error: failed to use text index to satisfy $text query (if text index is compound, are equality predicates given for all prefix fields?)",
"waitedMS": 0,
"ok": 0,
"errmsg": "error processing query: ns=MYDB.caseNotesTree: TEXT : query=title, language=english, caseSensitive=0, diacriticSensitive=0, tag=NULL\nSort: {}\nProj: {}\n planner returned error: failed to use text index to satisfy $text query (if text index is compound, are equality predicates given for all prefix fields?)",
"code": 2
}

尝试此查询

Model
.find(
{ $text : { $search :req.query.q } }

)
.exec(function(err, data) {
if(err)res.json(err)
res.json(data)
});

编辑:按照建议,我应该在查询中设置 _type 字段,但 _type 是“自动填充”,因为它是一个鉴别器。具有单个 _type 的查询可以工作,但我不需要它,我必须查询 4 ​​个继承的模型。我什至尝试了 $or,但无法解决相同的错误。

Model
.find(
{ $or: [ { _type: 'childA' },
{ _type: 'childB' },
{ _type: 'childC' },
{ _type: 'childD' }
], $text : { $search :req.query.q } }

)
.exec(function(err, data) {
if(err)console.log(err)
res.json(data)
});

最佳答案

错误消息显示“如果文本索引是复合的,是否为所有前缀字段给出了相等谓词?”。这意味着,在您的查询中,您还需要提供类型。您的查询不会执行此操作,因为它仅使用索引的 $text 部分,而不使用索引的 type 部分。

关于Mongodb错误 "failed to use text index to satisfy $text query",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36056594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com