Ava*_*vaq 9 javascript search mongodb
你好.在我看来,这是一个奇怪的问题,我对此感到茫然:
让我们来:
tags = [ ObjectId('a'), ObjectId('b') ]
search = { $search: 'abc' }
Run Code Online (Sandbox Code Playgroud)
现在以下查询工作正常:
db.entries.find({ $or: [ {$text:search} ] })
Run Code Online (Sandbox Code Playgroud)
还有这个:
db.entries.find({ $or: [ {tags:{$in:tags}} ] })
Run Code Online (Sandbox Code Playgroud)
但结合它们:
db.entries.find({ $or: [ {$text:search}, {tags:{$in:tags}} ] })
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Unable to execute query: error processing query: ns=db.entries
Tree:
$or
tags $in [ ObjectId('a'), ObjectId('b') ]
TEXT : query=abc, language=, tag=NULL
Sort: {}
Proj: {}
No query solutions
Run Code Online (Sandbox Code Playgroud)
2.6.4.{_id:"c"}表达式组合就可以正常工作.$or-array中的顺序不会影响结果.救命?:(
在稍微不同的环境下运行查询会产生更明显的错误:
Runner error: BadValue error processing query: ns=webistor.entries limit=0 skip=0
Tree: $or
tags $in [ ObjectId('a') ObjectId('b') ]
TEXT : query=abc, language=, tag=NULL
Sort: {}
Proj: {}
planner returned error: Failed to produce a solution for TEXT under OR - other non-TEXT clauses under OR have to be indexed as well.
Run Code Online (Sandbox Code Playgroud)
注意
OR下的其他非TEXT条款也必须编入索引
显然我必须添加一个索引tags.