zr0*_*ty7 2 javascript mongoose mongodb node.js mongodb-query
将 Mongoose ODM 与 MongoDB 实例结合使用,如何删除数据库实例的所有集合中的所有文档,而不必破坏集合本身或其索引?
对比:
await mongoose.connection.db.dropDatabase();
Run Code Online (Sandbox Code Playgroud)
删除给定数据库,包括所有集合、文档和索引。
根据Mongoose 文档,这是不希望的。
迭代数据库中由哈希值给出的所有集合Connection.prototype.collections,并用于Query.prototype.deleteMany()删除集合中的每个文档。
查询deleteMany()/操作是异步的(它返回一个Query类似 Promise 的对象)。为了迭代地执行所有集合的操作,我们可以将每个集合映射到一个带有异步回调的 Promise,我们在其中await调用,并Promise.all在所有查询都解决时用于解析。
async function clearCollections() {
const collections = mongoose.connection.collections;
await Promise.all(Object.values(collections).map((collection) =>
collection.deleteMany({}) // an empty mongodb selector object ({}) must be passed as the filter argument
));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4261 次 |
| 最近记录: |