推荐使用Mongoose删除索引的方法是什么?

我需要为MongoDB数据库创build几个部署脚本,比如数据迁移和固定装置,而且我找不到有关如何使用Mongoose API删除索引的足够信息。 使用官方的MongoDB API时,这非常简单:

删除指定集合上的所有索引:

db.collection.dropIndexes();

不过,我想使用Mongoose这个,我试图使用从这篇文章改编的executeDbCommand ,但没有成功:

 mongoose.connection.db.executeDbCommand({ dropIndexes: collectionName, index: '*' }, function(err, result) { /* ... */ }); 

我应该使用Node.js官方的MongoDB API还是错过了这个方法?

要通过集合的Mongoose模型执行此操作,可以调用本地集合的dropAllIndexes

 MyModel.collection.dropAllIndexes(function (err, results) { // Handle errors }); 

更新

本机驱动程序的2.x版本中不推荐使用dropAllIndexes ,因此应该使用dropIndexes

 MyModel.collection.dropIndexes(function (err, results) { // Handle errors }); 

它看起来像你试图放弃给定集合的所有索引。

根据MongoDB Docs, 这是正确的命令 。

…我试图使用从这篇文章改编的executeDbCommand,但没有成功:

要真正帮到这里,我们需要更多的细节:

  • 什么失败了? 你是如何衡量“不成功”的?
  • 你能确认100%的命令是否运行? 你输出到callback中的日志? 你检查了errvariables吗?
  • 你在哪里创build索引? 你可以确认你不是在丢弃后重新创build它们吗?
  • 在列出特定索引名称时,您是否尝试过该命令? 老实说,你不应该使用"*" 。 你应该删除并创build非常具体的索引。