我在MongoDB上进行开发.对于完全非邪恶的目的,我有时想要吹掉数据库中的所有东西 - 也就是说,删除每一个集合,以及其他任何可能存在的东西,并从头开始.是否有一行代码可以让我这样做?同时给出MongoDB控制台方法和MongoDB Ruby驱动程序方法的加分点.
Jos*_*h K 573
在mongo shell中:
use [database];
db.dropDatabase();
Run Code Online (Sandbox Code Playgroud)
Rim*_*ian 110
另外,从命令行:
mongo DATABASE_NAME --eval "db.dropDatabase();"
Run Code Online (Sandbox Code Playgroud)
Ger*_*ing 62
当我需要重置所有集合但不想让任何数据库用户失去时,我遇到了同样的问题.如果要保存数据库的用户配置,请使用以下代码行:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
Run Code Online (Sandbox Code Playgroud)
此代码将遍历一个数据库中的所有集合名称,并删除那些不以"system"开头的集合.
Dan*_*anH 34
我沿着这db.dropDatabase()条路线走了很长一段时间,但是如果你试图在测试用例之间使用它来擦除数据库,你最终可能会发现数据库丢弃后索引约束不能得到满足的问题.因此,您可能需要使用ensureIndexes,或者更简单的路径将完全避免使用dropDatabase,只需从循环中删除每个集合,例如:
db.getCollectionNames().forEach(
function(collection_name) {
db[collection_name].remove()
}
);
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我使用以下命令从命令行运行:
mongo [database] --eval "db.getCollectionNames().forEach(function(n){db[n].remove()});"
Run Code Online (Sandbox Code Playgroud)
Bog*_*n D 16
通过编译@Robse和@DanH(kudos!)的答案,我得到了以下完全满足我的解决方案:
db.getCollectionNames().forEach( function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db.collection_name.remove({});
});
Run Code Online (Sandbox Code Playgroud)
连接到您的数据库,运行代码.
它通过删除用户集合并清空系统集合来清理数据库.
Sel*_*amy 16
db.getCollectionNames().forEach(c=>db[c].drop())
Run Code Online (Sandbox Code Playgroud)
sja*_*jas 10
如果您需要一次删除所有内容:(一次删除所有数据库)
mongo --quiet --eval 'db.getMongo().getDBNames().forEach(function(i){db.getSiblingDB(i).dropDatabase()})'
Run Code Online (Sandbox Code Playgroud)
听到一些使用mongo shell的mongodb的完全删除操作
要删除集合中的特定文档: db.mycollection.remove( {name:"stack"} )
要删除集合中的所有文档: db.mycollection.remove()
要删除集合: db.mycollection.drop()
删除数据库:首先通过use mydb命令转到该数据库然后
db.dropDatabase()
Run Code Online (Sandbox Code Playgroud)
小智 8
使用
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
Run Code Online (Sandbox Code Playgroud)
我更喜欢
db.your_collection.remove({})
Run Code Online (Sandbox Code Playgroud)
超过
db.your_collection.drop()
Run Code Online (Sandbox Code Playgroud)
如果您的集合是特殊集合,即上限集合或其中一个字段标记为唯一的集合,则删除将清除集合本身,并且当再次创建集合时,它将是一个普通集合。您将必须再次定义属性。因此使用remove()清除文档不会删除集合并影响集合的行为。
小智 5
如果您只想删除数据库及其子集合,请使用以下命令:
use <database name>;db.dropDatabase();如果要删除 mongo 中的所有数据库,请使用以下命令:
db.adminCommand("listDatabases").databases.forEach(function(d)
{
if(d.name!="admin" && d.name!="local" && d.name!="config")
{
db.getSiblingDB(d.name).dropDatabase();
}
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
251043 次 |
| 最近记录: |