我有一个连接到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不再占用足够的空间。不过,我想知道发生了什么事。
命令removedropDatabase之间有什么区别?一个什么时候用一个,另一个什么时候用?(我两个都在运行-这很傻吗?)还有,有人知道为什么mongo在运行remove之后仍然占用大量空间吗?
任何相关阅读链接将不胜感激。(但最好是“假人”级别的读数。如果说我是一个蒙哥人,那就是对真正的蒙哥人的侮辱。)

最佳答案

主要的区别是db.remove({})会删除所有文档,但您的集合仍然具有元数据之类的索引。dropDatabase从字面上删除整个集合,包括元数据。
如果您正在重新创建集合索引,或者您没有集合索引,请使用dropDatabase它会快得多。
检查此link以了解db.collection.drop()vsdb.dropDatabase()
如果你想学习MongoDB,我建议你阅读这篇book。它还解释了您的用例。

10-05 19:24