我一直在做一个项目。我的用户可能需要删除 50k+(我的意思是大量与帖子喜欢相关的文档,如果帖子被删除,该帖子的喜欢文档将被删除)文档。我看到这需要大量的时间。需要提一下 - 我的 Like 文档集合有多个索引。
我的问题 - 有没有其他方法可以删除总计 50k+ 的 Like 文档,或者我应该通过更新操作使用删除标记字段和 TTL index
字段,还是有任何其他手动方式可以安排删除外源文档操作?
不幸的是,更新 55485 个文档需要 15.3 秒,而删除这些文件需要 6 分钟 + .
在我的测试 like collection
中,我有 2000 万个文档。但在本地主机数据库服务器上的性能非常差。
文档结构:
{
"_id" : 2,
"date" : ISODate("2019-07-17T14:30:41.155Z"),
"isPresent" : false,
"tags" : [
"9301",
"8175",
"1374"
],
"userId" : 9969
}
索引
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_"
},
{
"v" : 2,
"key" : {
"tags" : 1
},
"name" : "tags",
"background" : false
},
{
"v" : 2,
"key" : {
"isPresent" : 1
},
"name" : "isPresent",
"background" : false
},
{
"v" : 2,
"key" : {
"userId" : 1
},
"name" : "userId",
"background" : false
},
{
"v" : 2,
"key" : {
"date" : 1,
"isPresent" : 1
},
"name" : "dateAndIsPresent",
"background" : false
},
{
"v" : 2,
"key" : {
"isPresent" : 1,
"tags" : 1
},
"name" : "isPresentAndTags",
"background" : false
},
{
"v" : 2,
"key" : {
"removeTTl" : 1.0
},
"name" : "removeTTl_1",
"expireAfterSeconds" : 30.0
}
]