1

任何人都有一个方便的mongo命令来删除数据库中早于 X 日期/ X 天的所有条目?

基本上有一个开发和生产数据库,我希望稍微修剪一下开发数据库以限制大小。

谢谢您的帮助!

4

2 回答 2

3

你可以从 mongo shell 做这样的事情。

var older=Date.parse("2013-03-01"),collection=db.so,all=collection.find();
all.forEach(function(doc) { var ts = doc._id.getTimestamp();
    if (ts < older) { collection.remove(doc); } });

上面的行(您将粘贴到 shell 中)将删除在 2013 年 3 月 1 日之前创建的指定集合 ( ) 中的所有文档。它依赖于每个都有嵌入collection=db.so的事实(基于文档创建 ( docs )),可以检索和使用。ObjectIdtimestamptimestamp

您当然可以更改查询以查找文档中的特定时间戳字段。

if (doc.timestampField < older) { collection.remove(doc); } }) 
于 2013-04-01T22:08:21.123 回答
2

您可以使用 mongo 在指定时间后删除数据的概念,即通过设置 TTL 使集合中的数据过期。

请参考下面的链接这样做 http://docs.mongodb.org/manual/tutorial/expire-data/

于 2013-10-29T11:23:28.010 回答