我有一个收藏集(例如CollOne),其中包含几百万个文档。它们具有共同的字段“ id”
{...,"id":1}
{...,"id":2}
我需要按ID删除CollOne中的某些文档。这些id存储在另一个集合(CollTwo)的文档中。此ids_to_delete文档的结构如下
{"action_type":"toDelete","ids":[4,8,9,....]}
由于CollOne很大,因此查找和删除一个文档将花费很长时间。有什么办法可以加快这个过程?
答案 0 :(得分:1)
就像您想要删除任何东西一样,您真的无法避免在数据库中执行删除操作。如果您遇到性能问题,我建议您确保在id
字段上建立索引,否则Mongo将使用COLLSCAN
来满足查询要求,这意味着它将遍历整个{ {1}}收集的东西,我想您会感到痛苦。
确定索引已建立之后,没有比使用colLOne
更有效的方式了。
deleteMany
db.collOne.deleteMany({id: {$in: [4, 8, 9, .... ]})
选项)background
----编辑----
在Mongo shell中:
Mongo shell是基于javascript的,因此您只需要使用js语法执行相同的逻辑,这就是我的方法:
db.collOne.createIndex({id: 1})