Mongoose不重新创build索引集合被丢弃

我知道我应该删除所有文件,而不是删除集合。 但为什么mongoose不会在集合被删除后重新创build索引?

我有一个模式,其中一个领域有unique:true集。 索引是在我启动服务器时创build的。 但是,如果我删除集合,并有新的logging,集合被重新创build和logging插入。 但是,唯一字段的索引不会再次创build。

为什么这样? 我如何要求它重新创build索引?

它与独特无关。 如果在mongodb中删除索引,则必须重新启动节点。

当您的应用程序启动时,Mongoose将自动为您的模式中定义的每个索引调用ensureIndex。 Mongoose将依次为每个索引调用ensureIndex,并在所有ensureIndex调用成功或发生错误时在模型上发出'index'事件。 尽pipe对开发很好,但build议在生产中禁用此行为,因为索引创build可能会对性能产生重大影响。

不过,在开发模式下,您可以在方法中重新创build索引(例如绑定到路由或事件的方法):

 (Mongodb > 3.0) db.collection.createIndex({}) (Mongodb < 3.0) db.collection.ensureIndex({}) 

用Mongoose看起来像这样:

 Model.ensureIndexes(function (err) { if (err) { return res.end(err); } });