MongoDB随机无法删除分片数据库

我有几个使用真正的MongoDB数据库版本3.2的集成testing。 用Mocha运行testing,并在每次testing之后使用以下代码删除testing数据库。 它使用Mongoose 4.4.12版本和本地MongoDB Node.js驱动程序。

afterEach((done) => { const connection = mongoose.createConnection(config.db.host); connection.once("open", () => { connection.db.command({ dropDatabase: 1 }) .then((res) => done(null, res)) .catch(done); }); }) 

它很好地工作,直到我在我的本地环境中启用分片以覆盖testing。 丢弃数据库开始随机失败。 上面的代码在每三次testing运行中都没有放弃我的testing数据库。 我的分片设置是最小的,有一个configuration服务器,一个蒙哥马斯和两个蒙哥碎片。

在我添加了一些日志logging之后,我发现connection.db.command({ dropDatabase: 1 })在这些失败的运行中返回{ info: 'database does not exist', ok: 1 } 。 数据库没有被删除,因为MongoDB认为它已经被删除,即使不是这种情况。

我完全错了吗? 是否有一些Mongoose / MondoDB的Node.js本地驱动程序configuration,或者我在这里失踪? 或者这是一些已知的问题? 任何帮助深表感谢。

编辑:同样的事情发生,如果我直接使用MongoClient ,所以mongoose不会造成这种情况。

       

网上收集的解决方案 "MongoDB随机无法删除分片数据库"