`mongo`查询清除旧条目

时间:2013-04-01 20:24:17

标签: mongodb

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

基本上有一个开发和生产数据库,我正在寻找修改dev DB以限制大小。

感谢您的帮助!

2 个答案:

答案 0 :(得分: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)中的所有文档。它依赖于每个{{1有一个嵌入式ObjectId(基于文档创建的timestampdocs)),可以检索和使用它。

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

timestamp

答案 1 :(得分:2)

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

请参阅以下链接 http://docs.mongodb.org/manual/tutorial/expire-data/

相关问题