无法删除Mongo中的数据库:它在删除后立即(并且神秘地)返回

时间:2013-05-31 07:31:32

标签: mongodb

当我们运行show dbs命令时,x-development数据库不会出现。然后当我们从shell中删除数据库时,它仍然允许我们再次访问它:

> use x-development
switched to db x-development
> db.dropDatabase()
{ "dropped" : "x-development", "ok" : 1 }
> use x-development
switched to db x-development
>

为什么会这样?我们在mongo 2.2上。

我们正在尝试删除数据库,因为它出现在mongostat下,我们希望确保此数据库不占用服务器资源:

[root@mongo]# mongostat
connected to: 127.0.0.1
insert  query update delete getmore command flushes mapped  vsize    res faults               locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn       time
     0      5      0      0       0       1       1  2.11g  4.86g   464m      0 x-development:0.0%          0       0|0     0|0    62b     2k     3   11:42:57
     0      0      0      0       0       1       0  2.11g  4.86g   464m      0 x-development:0.0%          0       0|0     0|0    62b     2k     3   11:42:58
     0      0      0      0       0       1       0  2.11g  4.86g   464m      0 x-development:0.0%          0       0|0     0|0    62b     2k     3   11:42:59

所以真正的问题是:如果数据库不存在,为什么这个数据库出现在mongostat下?

2 个答案:

答案 0 :(得分:3)

> db.dropDatabase()

...确实丢弃了数据库。 use可以切换到任何数据库,无论是否存在,直到您实际插入了重建数据库的内容。

  

>显示dbs
  本地(空)

     

>使用开发   切换到db dev

     

>显示dbs
  本地(空)

     

> db.test.insert({一个:1})

     

>显示dbs
  dev 0.203125GB
  本地(空)

     

> db.dropDatabase()
  {“drop”:“dev”,“ok”:1}

     

>显示dbs
  本地(空)

答案 1 :(得分:0)

在Mongo中,您不会显式创建数据库。您只是开始使用它(例如通过发出use语句)并自动创建它。

如果您不查询,数据库将不会使用任何资源。所以,我认为你不应该担心它。