我在MongoDB上做开发。出于完全无害的目的,我有时想要删除数据库中的所有内容——也就是说,删除每一个集合,以及周围可能存在的任何其他内容,然后从头开始。是否有一行代码可以让我这样做?同时提供MongoDB控制台方法和MongoDB Ruby驱动程序方法的额外好处。
当前回答
如果你只想删除一个数据库和它的子集合,使用这个:
使用<数据库名称>; 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();
}
}
);
其他回答
在MongoDB 3.2及更新版本中,Mongo shell中的Mongo().getDBNames()将在服务器中输出一个数据库名称列表:
> Mongo().getDBNames()
[ "local", "test", "test2", "test3" ]
> show dbs
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
遍历数组的forEach()循环然后可以调用dropDatabase()来删除所有列出的数据库。您还可以选择跳过不想删除的一些重要数据库。例如:
Mongo().getDBNames().forEach(function(x) {
// Loop through all database names
if (['admin', 'config', 'local'].indexOf(x) < 0) {
// Drop if database is not admin, config, or local
Mongo().getDB(x).dropDatabase();
}
})
示例运行:
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
test2 0.000GB
test3 0.000GB
> Mongo().getDBNames().forEach(function(x) {
... if (['admin', 'config', 'local'].indexOf(x) < 0) {
... Mongo().getDB(x).dropDatabase();
... }
... })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
我更喜欢
db.your_collection.remove({})
over
db.your_collection.drop()
如果你的收藏是特别的收藏 例如,一个有上限的集合或一个字段被标记为唯一的集合,删除将清除集合本身,当再次创建集合时,它将是一个普通的集合。您必须重新定义属性。 因此,使用remove()在不删除集合和影响集合行为的情况下清除文档。
在蒙戈壳里:
use [database];
db.dropDatabase();
并删除用户:
db.dropAllUsers();
db.getCollectionNames().forEach(c=>db[c].drop())
通过编译@Robse和@DanH的答案,我得到了以下完全让我满意的解决方案:
db.getCollectionNames().forEach( function(collection_name) {
if (collection_name.indexOf("system.") == -1)
db[collection_name].drop();
else
db[collection_name].remove({});
});
它通过删除用户集合和清空系统集合来清理数据库。
推荐文章
- elasticsearch vs . MongoDB用于过滤应用程序
- MongoDB记录所有查询
- MongoDB:如何找到安装的MongoDB的确切版本
- 如何使用mongoimport导入CSV文件?
- 在mongodb中存储日期/时间的最佳方法
- 如何排序mongodb与pymongo
- 如何在mongodb上导入。bson文件格式
- JSON文件的蒙古导入
- 如何删除mongodb中的数组元素?
- 修改MongoDB数据存储目录
- 在MongoDB中查找重复的记录
- 为什么MongoDB Java驱动在条件中使用随机数生成器?
- 在猫鼬,我如何排序的日期?(node . js)
- 将映像存储在MongoDB数据库中
- 重复Mongo ObjectId的可能性在两个不同的集合中生成?