【发布时间】:2013-03-22 23:39:08
【问题描述】:
谁有一个方便的mongo 命令来从数据库中删除早于 X 日期/ X 天的所有条目?
基本上有一个开发和生产数据库,我希望稍微修剪一下开发数据库以限制大小。
感谢您的帮助!
【问题讨论】:
-
他们大部分都有日期时间字段。为了简洁起见,让我们假设他们都这样做。我总是可以按 _id 对其进行排序,并且仅在需要时保留最后 X 个文档。
标签: mongodb
谁有一个方便的mongo 命令来从数据库中删除早于 X 日期/ X 天的所有条目?
基本上有一个开发和生产数据库,我希望稍微修剪一下开发数据库以限制大小。
感谢您的帮助!
【问题讨论】:
标签: mongodb
你可以在 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) 中的所有文档。它依赖于每个 ObjectId 都有一个内嵌timestamp(基于文档创建的timestamp(docs)),可检索使用。
您当然可以更改查询以查找文档中的特定时间戳字段。
if (doc.timestampField < older) { collection.remove(doc); } })
【讨论】:
您可以使用 mongo 在指定时间后删除数据的概念,通过设置 TTL 使集合中的数据过期。
请参考以下链接 http://docs.mongodb.org/manual/tutorial/expire-data/
【讨论】: