MongoDB shell:如何删除除list之外的所有集合



我想删除所有集合,除了一个列表。

db.getCollectionNames().forEach(function(n){db[n].remove({})});

将删除所有集合。

db.getCollectionNames().filter(function(collection){return! /^((keepthisone)|(andthisone)|(alsokeepthisone))$/.test(collection)});

将列出所有的收藏,除了我想保留的。

如何将两者结合起来?

db.getCollectionNames().filter(function(collection){return! /^((keepthisone)|(andthisone)|(alsokeepthisone))$/.test(collection)}).forEach(function(n){db[n].remove({})});

什么也不做。

I wouldmapthendropon items:

db.getCollectionNames().filter(function(collection) {
return !/^((keepthisone)|(andthisone)|(alsokeepthisone))$/.test(collection);
}).map(function(n){
return db.getCollection(n);
}).forEach(function(collection){
collection.drop();
});

我更喜欢这样:

db.getSiblingDB('test').getCollectionNames().filter( 
collection => !['keepthisone', 'andthisone', 'alsokeepthisone'].includes(collection)
).forEach( collection => {
db.getSiblingDB('test').getCollection(collection).drop();
});

出于安全原因,您应该使用getSiblingDB(...)。在运行您的命令之前,您永远不知道用户是否执行了诸如use admin之类的愚蠢命令。结果会很糟糕。

相关内容

  • 没有找到相关文章

最新更新