Javascript 从MongooseJS 5.x获取MongoDB中的当前集合
我正在做一个演示项目,每小时重置我的mongodb集合。我知道如何在我的节点项目中使用cron。我搞不懂的是如何获取集合名称。我看过其他的解决方案,但在早期版本的mongoose中似乎有一种方法,而不是V5Javascript 从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
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;