Mongodb 批量删除基于最旧版本筛选的mongo文档的固定数量
我有一个设置,我们担心Mongo db的大小会不成比例 封顶收集不是我们的选项,因为我们正在动态更新文档 我正在考虑以这样一种方式实施它:如果该集合中的文档数量达到1000个,那么将从最早的文档开始删除500个文档 到目前为止,我发现以下是最相关的,但是没有办法限制和排序的基础上的时间。 进一步研究后,我发现:Mongodb 批量删除基于最旧版本筛选的mongo文档的固定数量,mongodb,python-3.x,datetime,bulk-delete,Mongodb,Python 3.x,Datetime,Bulk Delete,我有一个设置,我们担心Mongo db的大小会不成比例 封顶收集不是我们的选项,因为我们正在动态更新文档 我正在考虑以这样一种方式实施它:如果该集合中的文档数量达到1000个,那么将从最早的文档开始删除500个文档 到目前为止,我发现以下是最相关的,但是没有办法限制和排序的基础上的时间。 进一步研究后,我发现: 不过,我认为应该有更简单、更有效的方法。好吧,\u id已经在某种程度上表示了“时间”,只要你有ObjectId值,并且没有用其他东西代替它。实际上,您确实需要类似于.find().
不过,我认为应该有更简单、更有效的方法。好吧,
\u id
已经在某种程度上表示了“时间”,只要你有ObjectId
值,并且没有用其他东西代替它。实际上,您确实需要类似于.find().sort({u id:1}).limit(500)
的东西,就像引用的响应所说的那样。您可以通过$in
将\u id
值馈送到.remove()
,也可以在范围内使用结果中的“first”和“last”id
值。remove({“\u id”:{“$gte”:lastId,$lte”:firstId})。但是如果您希望限制直接在remove()
那么它就不存在了。仅供参考。Bulk.find.remove()
和Collection.remove()
基本上是相同的方法。在底层,所有API收集方法(除了findBy*
变种)实际上在其底层实现中调用Bulk
API。只是不需要“批”操作。