我在MongoDB上做开发。出于完全无害的目的,我有时想要删除数据库中的所有内容——也就是说,删除每一个集合,以及周围可能存在的任何其他内容,然后从头开始。是否有一行代码可以让我这样做?同时提供MongoDB控制台方法和MongoDB Ruby驱动程序方法的额外好处。
当前回答
当我需要重置所有集合但又不想失去任何数据库用户时,我遇到了同样的问题。如果您想保存数据库的用户配置,请使用以下代码行:
use <whichever database>
db.getCollectionNames().forEach(function(c) { if (c.indexOf("system.") == -1) db[c].drop(); })
这段代码将遍历一个数据库中的所有集合名称,并删除不以“system.”开头的集合名称。
其他回答
这里有一些有用的删除操作mongodb使用mongo shell
删除集合中的特定文档。删除({name:"stack"})
删除集合中的所有文档:db.mycollection.remove()
删除任何特定集合:db.mycollection.drop()
删除数据库。 首先使用mydb命令进入该数据库,然后
db.dropDatabase()
Use
[databaseName]
db.Drop+databaseName();
drop collection
use databaseName
db.collectionName.drop();
对于Meteor开发者。
在localhost:3000中运行应用程序时打开第二个终端窗口。 在项目的文件夹中运行,meteor mongo。 coolName = new Mongo.Collection('yourCollectionName'); 然后输入db.yourCollectionName.drop(); 您将自动在本地服务器中看到更改。
为了其他人。
db.yourCollectionName.drop ();
如果你只想删除一个数据库和它的子集合,使用这个:
使用<数据库名称>; 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();
}
}
);
通过编译@Robse和@DanH的答案,我得到了以下完全让我满意的解决方案:
db.getCollectionNames().forEach( function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db[collection_name].remove({});
});
它通过删除用户集合和清空系统集合来清理数据库。
推荐文章
- MongoDB在v4之前不兼容ACID意味着什么?
- 显示所有集合中的所有内容
- MongoDB:更新一个字段上的每个文档
- 我如何在MongoDB中部分更新一个对象,以便新对象将覆盖/合并现有的一个
- MongoDB的命名约定是什么?
- MongoDB在尝试插入整数时插入浮点数
- 通过将useNewUrlParser设置为true来避免“当前URL字符串解析器已弃用”警告
- 如何查询嵌套对象?
- NoSQL (MongoDB) vs Lucene(或Solr)作为您的数据库
- 如何重命名MongoDB中所有文档的字段?
- 如何复制一个集合从一个数据库到另一个在MongoDB
- 比较mongoose _id和字符串
- MongoDB:如何将多个集合中的数据合并为一个?
- MongoDB - admin用户未授权
- 如何在MongoDB的shell中打印出超过20个项目(文档)?