【发布时间】:2019-08-26 14:24:00
【问题描述】:
我想知道您对以下情况的看法:
提供以下 mongo db 集合:
收藏大小:192.87GB
文件总数:165.578.552
我想删除一年后的文档。我估计它将是集合的一半左右,大约 8000 万份文档。
所以基本上我有两个问题:
在删除文档之前运行count() 查询以获得完全匹配是否安全?
...->count({timestamp: {$lt: '1534976762'}})
注意:timestamp 未编入索引,我还有另一个字段 time,已编入索引,但我无法使用 time.sec 进行查询
其次,我可以安全地批量删除多少个文档?我来自 MySQL 世界,而不是 Mongo 专家,所以也许我采取了很多预防措施。这是一个生产数据库。
谢谢!
【问题讨论】:
-
在非索引字段上,
count(...)是不安全的,因为它会进行集合扫描。执行db.collection.explain().count(...)并检查它是否包含COLLSCAN。如果是(应该),那就不安全了。 -
此外,
db.collection.getIndexes()在该集合上的输出是什么?你如何索引time字段?
标签: mongodb mongodb-query