2013-05-31 25 views
1

当我们运行show dbs命令时,x-development数据库没有出现。那么当我们从外壳中删除数据库时,它仍然允许我们再次访问它:无法在Mongo中删除数据库:在我们删除它后立即(并且神秘地)返回

> 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下删除数据库,而我们希望确保该数据库中未考虑服务器资源:

[[email protected]]# 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之下?

回答

3
> db.dropDatabase() 

...确实丢失了数据库。 use可以切换到任何数据库,现有或没有,直到你实际上插入了数据库被重新创建的东西。

>显示DBS
本地(空)

>使用开发
切换到DB开发

>显示DBS
本地(空)

> db.test。插入({a:1})

>显示DBS
开发0.203125GB
本地(空)

> db.dropDatabase()
{ “下降”: “开发”, “OK”:1}

>显示DBS
本地(空)

+0

确定更新了问题,然后......感谢您的快速回答。 – Crashalot

+0

@Crashalot你可能能够得到一个更好的答案_why_'mongostat'显示一个被删除的数据库比这个,但我设法重复的效果和一个mongod重新启动从统计数据中删除它。 –

+0

会做,现在发布问题。谢谢! – Crashalot

0

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

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

+0

好了更新了问题,然后......感谢您的快速回答。 – Crashalot

+0

我不认为你会照顾。数据库可以占用资源的唯一方法是处理查询。您不查询它 - 它不使用任何资源。 – kirelagin

相关问题