Mongoose 不断为不再存在的旧字段创建索引

Posted

技术标签:

【中文标题】Mongoose 不断为不再存在的旧字段创建索引【英文标题】:Mongoose keeps creating indexes for old fields that do not exist anymore 【发布时间】:2018-03-25 20:31:54 【问题描述】:

所以我有一个具有usernamepassword 字段的模型用户。后来我将其更改为使用电子邮件而不是用户名。在另一个模型上进行了类似的更改 - 我将 username 重命名为 name。这两个字段都使用来自mongoose-unique-validator 的唯一验证。现在,每当我启动服务器时,猫鼬都会为所有新旧字段创建索引。架构中不再存在第一个和最后一个内容:

Mongoose: users.ensureIndex( username: 1 ,  unique: true, background: true )
Mongoose: people.ensureIndex( name: 1 ,  unique: true, background: true )
Mongoose: people.ensureIndex( uri: 1 ,  unique: true, background: true )
Mongoose: people.ensureIndex( username: 1 ,  unique: true, background: true )

删除数据库没有帮助,更改数据库也没有帮助。我真的不明白它可能来自哪里。猫鼬中有某种缓存吗?

【问题讨论】:

【参考方案1】:

好的,原因是我使用不正确的passport-local-mongoose。它会自动创建索引。我需要在选项中指定要用于用户名和密码的字段,而不仅仅是本地策略。而对于第二个模型,它只是被错误地插入了。

【讨论】:

以上是关于Mongoose 不断为不再存在的旧字段创建索引的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Mongoose 获取定义的索引

elasticsearch关于索引切分的实现

MongoDB索引问题

mongoose中给字段添加索引的方法

iOS / Firebase 想要连接到不再存在的旧数据库,不会让我更改参考

Mongoose:过滤,如果存在则更新文档,否则创建它