MongoDB:评测-删除
我创建了一个单独的每晚刷新数据的集合,我要做的第一件事就是删除其中当前的所有条目。通过分析,我发现这个remove命令可能需要101190毫秒 这正常吗?为了加快查询速度,我应该做些什么?似乎清空一个集合应该是相当即时的 谢谢你的帮助 在没有筛选条件的情况下执行MongoDB:评测-删除,mongodb,profiling,Mongodb,Profiling,我创建了一个单独的每晚刷新数据的集合,我要做的第一件事就是删除其中当前的所有条目。通过分析,我发现这个remove命令可能需要101190毫秒 这正常吗?为了加快查询速度,我应该做些什么?似乎清空一个集合应该是相当即时的 谢谢你的帮助 在没有筛选条件的情况下执行remove()可能会非常慢,因为每个文档都必须从集合数据文件和存在的任何索引(包括_id上的默认索引)中删除 如果要删除集合中的所有文档,尤其是如果您仅使用默认索引,或者可以从应用程序代码中轻松地重新创建索引,则可以drop()替换集合
remove()
可能会非常慢,因为每个文档都必须从集合数据文件和存在的任何索引(包括_id上的默认索引)中删除
如果要删除集合中的所有文档,尤其是如果您仅使用默认索引,或者可以从应用程序代码中轻松地重新创建索引,则可以drop()
替换集合,然后开始添加新数据
通过使用like(在伪Python中),可以进一步减少集合显示为空或部分满的时间:
dcrosta已经描述了
remove()
速度慢的原因,这也是为什么清除集合中的所有数据不是一个好主意
由于您可以在MongoDB中动态创建或删除集合,因此一种更快更好的方法是简单地删除集合,然后插入新文档(集合将自动重新创建)
因此,只需先发布一个
db.collname.drop()
。太好了,非常感谢您对本文的介绍;我不知道移除会如此耗时。
for new_record in new_records:
db.newcollection.insert(new_record)
for index_spec in index_specs:
db.newcollection.ensure_index(index_spec)
db.oldcollection.drop()
db.command('renameCollection', 'newcollection', to='oldcollection')