2012-03-06 71 views
1

有没有办法从多个集合中删除对象?像在MongoDB中删除这5个集合命令中的所有内容?一次删除多个集合中的东西

从Mongo数据库中的每个集合中去手动删除是很费时间的。

回答

1

正如Andrew所说,没有内建的方式来做到这一点,但你可以使用Javascript来获得你想要的。例如,如果我想迅速下降的数据库列表(和dirtily,这仅仅是一个验证的概念代码示例!):

var deletelist = ["deleteme1", "deleteme2", "deleteme3"] 
deletelist.forEach(
    function deletedbs(name) { 
     db = db.getMongo().getDB(name); 
     db.dropDatabase(); 
     print(name + " deleted"); 
    } 
) 

当然没有错误检查,但这种服务器端脚本将用于交叉收集和跨数据库功能。如果你想对所有数据库运行的东西,那么你可以构建名单如下:

var allDBs = db.getMongo().getDBNames() 
for(var name in allDBs){ 
     db = db.getMongo().getDB(name); 
     db.<command to execute on each DB>; 
} 

当然,你需要运行这样的事情,所以你避免破坏你的数据库是非常,非常小心,如此广泛的测试,并明智地使用:)

更多关于服务器端的JS,检查了MongoDB的文档在这里:

http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

1

没有实际上,你只需要删除手动从每个集合中的所有项目:

db.foo1.remove({}) 
db.foo2.remove({}) 

此外,如果你关心性能,你可以在所有下降集合,它应该是更快:

db.foo1.drop() 
db.foo2.drop() 

而且另一种方式,如果你经常需要放下这五个集合,他们组下一个数据库和删除整个数据库:

use dbWithFiveCollections 
db.dropDatabase() 
相关问题