Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 批量删除基于最旧版本筛选的mongo文档的固定数量_Mongodb_Python 3.x_Datetime_Bulk Delete - Fatal编程技术网

Mongodb 批量删除基于最旧版本筛选的mongo文档的固定数量

Mongodb 批量删除基于最旧版本筛选的mongo文档的固定数量,mongodb,python-3.x,datetime,bulk-delete,Mongodb,Python 3.x,Datetime,Bulk Delete,我有一个设置,我们担心Mongo db的大小会不成比例 封顶收集不是我们的选项,因为我们正在动态更新文档 我正在考虑以这样一种方式实施它:如果该集合中的文档数量达到1000个,那么将从最早的文档开始删除500个文档 到目前为止,我发现以下是最相关的,但是没有办法限制和排序的基础上的时间。 进一步研究后,我发现: 不过,我认为应该有更简单、更有效的方法。好吧,\u id已经在某种程度上表示了“时间”,只要你有ObjectId值,并且没有用其他东西代替它。实际上,您确实需要类似于.find().

我有一个设置,我们担心Mongo db的大小会不成比例

封顶收集不是我们的选项,因为我们正在动态更新文档

我正在考虑以这样一种方式实施它:如果该集合中的文档数量达到1000个,那么将从最早的文档开始删除500个文档

到目前为止,我发现以下是最相关的,但是没有办法限制和排序的基础上的时间。

进一步研究后,我发现:


不过,我认为应该有更简单、更有效的方法。

好吧,
\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。只是不需要“批”操作。