删除mongodb集合中特定数量的文档

时间:2021-05-31 14:14:27

标签: mongodb mongodb-atlas

我已将 Atlas 上的免费层级用尽,需要将我收藏中的文档数量减少一半或更多。

是否有一种直接的方法可以删除 N 个文档。我不需要查询或搜索特定文档,我只需要批量删除。我的收藏中有大约 10 万份文档,并且希望将其减少到 1 万份左右。

我尝试了 db.Articles.deleteMany({10000})db.Articles.remove(10000),但我知道语法错误

以下是我的文档的存储方式:

_id:
author:
title:
description:
url:
urlToImage:
publishedAt:
content:
summarization:
source_id:

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

您可以使用以下命令来获取计数:

db.collection.find({}).count()

这将为您提供集合中的数据行总数。然后,您可以将“N”替换为您想要删除的所需元素数量。

db.collection.find({}).limit(N).forEach(function(doc) {
    db.collection.remove({_id: doc._id});
})

请注意,这是一项繁重的计算任务,并对数据库进行 N+1 次查询(对于 ~50K 数据来说就像一个魅力,并且适合一次性使用)。如需最佳解决方案,请参阅 this 答案。

答案 1 :(得分:1)

如果你有publishAt是日期然后复制这个并添加任何你想删除的日期然后你可以从数据库中删除多个条目

try {
  db. Articles.deleteMany(
       { "created" : {$gt : ISODate("2020-06-19T05:00:21.798-04:00")} }
   );
} 
catch (e) {
   print (e);
}