1

当我们运行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如果数据库不存在,为什么这个数据库会出现在下面?

4

2 回答 2

3
> db.dropDatabase()

...确实删除了数据库。use可以切换到任何数据库,无论是否存在,直到您实际插入某些内容时才会重新创建数据库。

>> 显示 dbs
本地(空)

> 使用 dev
切换到 db dev

>> 显示 dbs
本地(空)

> db.test.insert({a:1})

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

> db.dropDatabase()
{ "dropped" : "dev", "ok" : 1 }

>> 显示 dbs
本地(空)

于 2013-05-31T07:37:08.660 回答
0

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

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

于 2013-05-31T07:36:52.903 回答