我有以下架构:
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
。
答案 0 :(得分:0)
按照Mongoose Not Creating Indexes中的描述进行调试后(感谢@JohnyHK的链接)我发现实际问题不是文本索引。
我使用的是mongoose-auto-increment插件,导致错误索引_id
字段。
解决方案是让autoIncrement不使用_id
字段,而是使用单独的字段:
entrySchema.plugin autoIncrement.plugin, {
model: 'Entry'
startAt: 1000
field: 'shortId'
}
我只是没有关于这一点,因为索引在没有文本索引的情况下工作正常。似乎与插件和文本索引存在某种不兼容性。