我有一个连接到raspi的传感器,用mongo收集数据。每隔几天我会复制数据库(使用mongodump
),然后删除mongo文件并重新启动传感器。
我在删除/部署Mongo时遇到了一些问题,我想知道我做错了什么。
最初,我使用以下命令:
use [database]
db.[nameOfOnlyCollection].remove({})
清空数据库(它只有一个集合)。使用命令
db.[nameOfOnlyCollection].count()
我可以验证集合是否为空。然而,即使在这之后,蒙戈仍然在拉斯皮身上占据了很大的空间。更具体地说,这些例子(似乎与mongo相关)占用了一些空间:
/var/lib/mongodb版本
/var/lib/mongodb/日志
/var/log/mongodb版本
然后我发现an answer建议使用命令
db.dropDatabase()
删除数据库中的所有条目。我现在同时运行
db.[nameOfCollection].remove({})
和db.dropDatabase()
,这已经解决了问题。意思是,Mongo不再占用足够的空间。不过,我想知道发生了什么事。命令
remove
和dropDatabase
之间有什么区别?一个什么时候用一个,另一个什么时候用?(我两个都在运行-这很傻吗?)还有,有人知道为什么mongo在运行remove
之后仍然占用大量空间吗?任何相关阅读链接将不胜感激。(但最好是“假人”级别的读数。如果说我是一个蒙哥人,那就是对真正的蒙哥人的侮辱。)
最佳答案
主要的区别是db.remove({})
会删除所有文档,但您的集合仍然具有元数据之类的索引。dropDatabase
从字面上删除整个集合,包括元数据。
如果您正在重新创建集合索引,或者您没有集合索引,请使用dropDatabase
它会快得多。
检查此link以了解db.collection.drop()
vsdb.dropDatabase()
如果你想学习MongoDB,我建议你阅读这篇book。它还解释了您的用例。