我在MongoDb数据库中有一些未使用的集合。我发现CRUD操作何时对数据库中的集合进行了处理。我们有自己的_id字段而不是mongo的默认object_id。我们没有时间在集合中提交以找出修改时间。有没有办法从元数据中找出mongodb中集合的修改时间?是否有任何数据字典信息,如在oracle中找到这个?请给出一些想法/解决方法
答案 0 :(得分:0)
在MongoDB中没有“数据字典”来获取此信息。
如果您已提前启用了性能分析级别以记录所有操作(db.setProfilingLevel(2)
)并且您没有多少操作要记录,那么system.profile
capped collection没有覆盖你感兴趣的任何日志,你可以获得你需要的信息 - 但是它已经消失了。
答案 1 :(得分:0)
简而言之:MongoDB有一个灵活的架构。只需添加日期字段即可。由于较旧的参赛作品不具备,因此不能成为最后一个参赛作品。
让我们调用该字段mtime
。
因此,在为模式定义添加日期字段后,我们会在新字段上按降序生成索引:
db.yourCollction.createIndex({mtime:-1})
现在可以轻松找到集合的最后一个mtime:
db.yourCollection.find({"mtime":{"$exists":true}}).sort({"mtime":-1}).limit(1)
为每个集合执行此操作。当上述查询未在您为清除集合定义的时间范围内返回值时,只需删除它,因为自您引入mtime字段后它尚未被修改。
清理收藏集后,您可以从架构定义中删除mtime
字段。要从文档中删除它,您可以运行一个简单的查询:
db.yourCollection.update(
{ "mtime":{ $exists:true} },
{ "$unset":{ "mtime":""} },
{ multi: true}
)