Mongoose没有重新创建索引集合被删除

时间:2016-07-11 13:17:24

标签: node.js mongodb mongoose

我知道我应该removeAll文件而不是放弃收藏品。但是为什么mongoose在集合被删除后没有重新创建索引?

我有一个架构,其中一个字段设置了unique:true。 我启动服务器时创建索引。但是,如果我删除集合,并且新记录到来,则会重新创建集合并插入记录。但是,不会再次创建唯一字段的索引。

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

1 个答案:

答案 0 :(得分:2)

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

  

当您的应用程序启动时,Mongoose会自动调用   ensureIndex用于架构中的每个已定义索引。猫鼬会打电话   依次为每个索引确保索引,并发出一个'索引'活动   所有ensureIndex调用成功或存在时的模型   一个错误。虽然很适合开发,但建议使用此行为   在生产中被禁用,因为索引创建可能会导致重大问题   绩效影响。

尽管如此,在开发模式下,您可以使用以下方法重新创建方法中的索引(例如,与路由或事件关联的方法):

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

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

使用Mongoose,它看起来像这样:

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