Javascript 从MongooseJS 5.x获取MongoDB中的当前集合

Javascript 从MongooseJS 5.x获取MongoDB中的当前集合,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在做一个演示项目,每小时重置我的mongodb集合。我知道如何在我的节点项目中使用cron。我搞不懂的是如何获取集合名称。我看过其他的解决方案,但在早期版本的mongoose中似乎有一种方法,而不是V5 console.log(mongoose.connection.db)//未定义 所以,基本上,我希望能够获得一个当前集合的数组,以编程方式删除它们并重新设置DB的种子 async function reloadDb(){ // Get collection names const coll

我正在做一个演示项目,每小时重置我的mongodb集合。我知道如何在我的节点项目中使用cron。我搞不懂的是如何获取集合名称。我看过其他的解决方案,但在早期版本的mongoose中似乎有一种方法,而不是V5

console.log(mongoose.connection.db)//未定义

所以,基本上,我希望能够获得一个当前集合的数组,以编程方式删除它们并重新设置DB的种子

async function reloadDb(){
// Get collection names
const collectionNames = await mongoose.connection.db    //undefined but I want array
// Map through results....
{...}

}

您可以使用
Object.key(mongoose.connection.collections)获取集合

此外,要以编程方式重置DB,可以在每个集合上循环执行以下操作:

const collections=mongoose.connection.collections;
for(集合中的常量键){
const collection=集合[键];
等待集合。deleteMany();
}

在类似的情况下,我总是尽可能地降低成本,例如,直接使用MongoDB客户端,并大致像这样删除集合,(这个答案适用于删除,如果需要删除或清除集合,则不太清楚)

const mongodb = require('mongodb')
const MongoClient = mongodb.MongoClient
const connectionURL = 'mongodb://localhost'

const client = new MongoClient(connectionURL, { useNewUrlParser: true, useUnifiedTopology: true });

const drop = async (databaseName) => {
    await client.connect().then(() => {
        const db = client.db(databaseName);
        const collections = db.listCollections();
        collections.forEach(element => {
            db.dropCollection(element.name);
        });
    }).catch(error => {
        console.log("ERROR:", error) // or some logger
    })
}

exports.drop = drop;