Mongoose不会创建文本索引

时间:2015-02-15 12:07:50

标签: node.js mongodb mongoose

我有以下架构:

entrySchema = new mongoose.Schema({

    size:    { type: Number },

    title:   {type: String, trim: true },
    content: { type: String, trim: true },

    tags:    { type: [String], trim: true, index: true },
    author:  { type: String, trim: true, index: true }
  });


entrySchema.index({ title: "text", content: "text" });

module.exports = mongoose.model('Entry', entrySchema);

问题是mongoose不会创建文本索引。但是,标签和作者的索引是正确创建的。

我是否以错误的方式使用index()函数?

我在mongod会话中没有收到任何错误。它记录了非文本索引的成功索引创建,但似乎mongoose从不为文本索引调用ensureIndex

1 个答案:

答案 0 :(得分:0)

按照Mongoose Not Creating Indexes中的描述进行调试后(感谢@JohnyHK的链接)我发现实际问题不是文本索引。

我使用的是mongoose-auto-increment插件,导致错误索引_id字段。 解决方案是让autoIncrement不使用_id字段,而是使用单独的字段:

entrySchema.plugin autoIncrement.plugin, {
    model: 'Entry'
    startAt: 1000
    field: 'shortId'
}

我只是没有关于这一点,因为索引在没有文本索引的情况下工作正常。似乎与插件和文本索引存在某种不兼容性。