Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB:评测-删除_Mongodb_Profiling - Fatal编程技术网

MongoDB:评测-删除

MongoDB:评测-删除,mongodb,profiling,Mongodb,Profiling,我创建了一个单独的每晚刷新数据的集合,我要做的第一件事就是删除其中当前的所有条目。通过分析,我发现这个remove命令可能需要101190毫秒 这正常吗?为了加快查询速度,我应该做些什么?似乎清空一个集合应该是相当即时的 谢谢你的帮助 在没有筛选条件的情况下执行remove()可能会非常慢,因为每个文档都必须从集合数据文件和存在的任何索引(包括_id上的默认索引)中删除 如果要删除集合中的所有文档,尤其是如果您仅使用默认索引,或者可以从应用程序代码中轻松地重新创建索引,则可以drop()替换集合

我创建了一个单独的每晚刷新数据的集合,我要做的第一件事就是删除其中当前的所有条目。通过分析,我发现这个remove命令可能需要101190毫秒

这正常吗?为了加快查询速度,我应该做些什么?似乎清空一个集合应该是相当即时的

谢谢你的帮助

在没有筛选条件的情况下执行
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')