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); } });
- 在node-csv-parser中调用node-mongodb-native:RangeError:超出最大调用堆栈大小
- mongoose只返回文档的id
- NodeJS&Mongoskin,不能做简单的更新。 传入的参数必须是12个字节或24个hexstring
- 有没有办法使用node-mongodb-native的dynamic密钥?
- 为什么在MongoDB中显式.open()连接?
- 为我的节点应用程序select正确的数据库
- mongoose查询与哪里
- Node.js / MongoDB / Mongoose:缓冲区比较
- 如何使用findByIdAndUpdate将objectId推送到对象的mongodb模式字段数组