npc*_*diu 14 javascript database mongoose mongodb node.js
我需要为MongoDB数据库创建几个部署脚本,如数据迁移和fixture,我找不到有关如何使用Mongoose API删除索引的足够信息.使用官方MongoDB API时,这非常简单:
要删除指定集合上的所有索引:
db.collection.dropIndexes();
但是,我想使用Mongoose,我尝试使用executeDbCommand改编自这篇文章,但没有成功:
mongoose.connection.db.executeDbCommand({ dropIndexes: collectionName, index: '*' },
function(err, result) { /* ... */ });
Run Code Online (Sandbox Code Playgroud)
我应该使用官方MongoDB API for Node.js还是我错过了这种方法?
Joh*_*yHK 25
要通过集合的Mongoose模型执行此操作,您可以调用dropAllIndexes本机集合:
MyModel.collection.dropAllIndexes(function (err, results) {
// Handle errors
});
Run Code Online (Sandbox Code Playgroud)
更新
dropAllIndexes在2.x版本的本机驱动程序中已弃用,因此dropIndexes应使用:
MyModel.collection.dropIndexes(function (err, results) {
// Handle errors
});
Run Code Online (Sandbox Code Playgroud)
如果您想使用 mongoose 维护架构定义中的索引(如果您使用的是 mongoose,您可能会这样做),您可以轻松删除不再使用的索引并创建尚不存在的索引。您可以await YourModel.syncIndexes()在需要同步的任何模型上运行一次。它将在后台创建.ensureIndexes并删除架构定义中不再存在的任何内容。您可以在此处查看完整文档:https :
//mongoosejs.com/docs/api.html#model_Model.syncIndexes
| 归档时间: |
|
| 查看次数: |
10161 次 |
| 最近记录: |