在 mongodb collection 中删除特定数量的文档

Delete a specific number of documents in a mongodb collection

我用完了 Atlas 上的免费套餐,需要将 collection 中的文档数量减少一半或更多。

有没有直接删除N个文档的方法。我不需要查询或搜索特定文件,我只需要批量删除。我的 collection 中大约有 100k 个文档,我想将其减少到 10k 左右。

我试过db.Articles.deleteMany({10000})db.Articles.remove(10000)但我知道语法是错误的

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

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

如有任何帮助,我们将不胜感激

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

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

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

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

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

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

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