MongoDB:如何获取集合中最后一个更新文档的最后更新的时间戳



是否有一种简单或优雅的方法(或我可以编写的查询)可以在集合中检索最后更新的时间戳(最后一个更新的文档)。我可以编写这样的查询以找到最后插入的文档

db.collection.find().limit(1).sort({$natural:-1})

,但我需要有关最后更新文档的信息(这可能是插入或更新)。

我知道,一种方法是查询OPLOG集合中的最后一个记录。但是,鉴于OPLOG的尺寸可能非常大(也不值得信赖,因为它是一个封顶的集合),这似乎是一项昂贵的操作。有一个更好的方法吗?

谢谢!

您可以在问题中提到的最后一次插入时间:

db.collection.find().sort({'_id': -1}).limit(1) 

但是,没有什么好方法可以查看最后一个更新/删除时间。但是,如果您使用的是副本集,则可以从oplog获得。

或者,您可以在文档中添加新字段为'lastModified'。您也可以结帐收集钩。我希望这会有所帮助

  1. 使用它的一种方法是拥有一个持续更新时间的字段。您可以将其命名为更新。每次您对文档进行更新时,您都会将值更新到当前时间。如果使用ISO格式存储时间,您将可以无问题进行排序(这就是我使用的)。

  2. 另一种方式是_id字段。

方法1 db.Collection.find()。限制(1).Sort({UpdatedAt:-1})

方法2 db.Collection.find()。限制(1).Sort({_ ID:-1})

您可以尝试,

db.collection.findOne().sort({$natural:-1}).limit(1);

最新更新