删除MongoDB集合和删除其中所有文档有什么权衡之处(假定该集合将立即被重新创建)?
drop
与remove
的1000000个记录。结果显示drop
为0.01秒,remove
为46.08秒。尽管确切时间可能因硬件和其他因素而异,但它仍然说明了drop
显着更快。如果您遍历一个集合并移除其中所有文档,那么您需要做更多的工作(释放文档的存储空间、清理指向文档的索引条目等)。相反,如果您只是删除整个集合,它将仅回收集合和其索引使用的区域。
另一个区别是删除集合还会删除该集合的索引。
一旦我们在集合中存储了文档,我们可以通过两种方式将所有文档从中删除。现在选择其中一种完全取决于您的要求。
1. 使用drop():
通过在集合上调用drop()
,它将从中删除所有文档,删除所有索引,并最终删除集合本身。
2.使用remove(): remove有两个重载版本,一个是我们将传递标准来删除与我们传递的标准匹配的所有文档,第二个是默认值,在此之前我们不会传递任何标准(2.6版之前)或传递一个空文档(2.6版或更高版本),它将从集合中删除所有文档。在这里,当我们的意图是清除集合中的所有文档时,我们更感兴趣的是第二个版本。
备注:如果要从集合中删除所有文档,使用drop()
方法删除整个集合(包括索引),然后重新创建集合并重建索引可能更有效。