Mongoose搜索会产生神秘错误

时间:2014-05-04 21:45:34

标签: node.js mongodb search mongoose mongoose-plugins

我正在使用Mongoose-Text-Search插件(https://github.com/aheckmann/mongoose-text-search)来搜索我的mongodb数据库,但是我收到了一个我以前从未见过的非常令人困惑的错误消息。

error:  name=MongoError, ok=0, errmsg=error processing query: ns=testdb.data limit=100 skip=0
Tree: TEXT : query=test, language=, tag=NULL
Sort: { $s: { $meta: "textScore" } }
Proj: { $s: { $meta: "textScore" } }
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?)

有人可以解释这意味着什么吗?我认为我正在使用文本搜索插件,但我不能为我的生活弄清楚这里有什么问题。

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 看起来您在Mongodb中创建了COMPOUND全文搜索索引。因此,您必须将全文搜索索引中的数据与其他字段一起请求。在此查看详细信息:http://docs.mongodb.org/manual/tutorial/limit-number-of-items-scanned-for-text-search/
  2. 有一些限制,例如你可以使用$ gt / $ gte / $ lt / $ lte / $ in / $由$和/ $等组成的类型作为谓词字段。详情请见https://jira.mongodb.org/browse/SERVER-13801

    1. 升级到Mongo 2.6.4并通过远程Mongoose-Text-Search插件。该插件仅适用于Mongo 2.4.x,对于现代Mongo版本来说绝对是多余的。只需使用find()方法进行全文搜索。