mau*_*int 5 mongodb mongodb-query
我想知道您对以下情况的看法:
给出以下 mongo 数据库集合:
集合大小:192.87GB
文件总数:165.578.552
我想删除一年以上的文档。我估计这将是馆藏的一半左右,大约 8000 万份文档。
所以基本上我有两个问题:
count()
在删除文档之前运行查询以获得完全匹配是否安全?
...->count({timestamp: {$lt: '1534976762'}})
注意:timestamp
没有索引,我有另一个字段time
,它已索引,但我还无法使查询工作time.sec
其次,我可以安全地批量删除多少文档?我来自 MySQL 世界,不是 Mongo 专家,所以,也许我采取了很多预防措施。这是一个生产数据库。
谢谢!
小智 5
我建议您关闭辅助节点并对其进行计数,获取数字,进行分析,然后执行删除。请记住,删除文档不会将空间释放回操作系统。相反,mongodb 会考虑未来的增长而预留空间
如果您计划对集合进行整理,最好将所需文档复制到新集合并删除现有文档
find
将您想要保留的文档复制到新集合,然后删除旧集合可能会更快。
要准确计算集合中的文档数量,您需要使用CountDocuments,因为旧count
命令无法在所有情况下提供准确的计数。正如前作者提到的,countDocuments
未索引的字段将进行集合扫描,这将影响数据库性能。获得集合后,您可以使用带有相同查询的deleteMany来删除这些文档。
为了确保计数的文档和删除的文档集不会更改,您可以在事务countDocuments
中运行和。delete_many
归档时间: |
|
查看次数: |
5508 次 |
最近记录: |