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

voi*_*oid 5 mongodb mongodb-query mongodb-oplog

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

db.collection.find().limit(1).sort({$natural:-1})
Run Code Online (Sandbox Code Playgroud)

但我需要有关最新更新文档的信息(可以是插入内容或更新内容)。

我知道一种方法是从集合中查询oplog集合中的最后一条记录。但是考虑到oplog的大小可能非常大(似乎也不可靠,因为它是一个受限制的集合),这似乎是一项昂贵的操作。有一个更好的方法吗?

谢谢!

Ani*_*gri 7

您可以按照您在问题中提到的方式获得最后一次插入时间:

db.collection.find().sort({'_id': -1}).limit(1) 
Run Code Online (Sandbox Code Playgroud)

但是,没有任何好方法可以查看上次更新/删除时间。但是,如果您使用副本集,则可以从oplog.

或者,您可以在文档中添加新字段作为'lastModified'. 您还可以结帐collection-hooks。我希望这个能帮上忙


Bal*_*des 5

  1. 一种方法是使用一个字段来保存上次更新的时间。您可以将其命名为updatedAt。每次更新文档时,只需将值更新为当前时间。如果您使用 ISO 格式存储时间,则可以毫无问题地进行排序(这就是我使用的)。

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

方法1 db.collection.find().limit(1).sort({updatedAt: -1})

方法2 db.collection.find().limit(1).sort({_id: -1})


Dam*_*har -2

你可以尝试用 ,

db.collection.findOne().sort({$natural:-1}).limit(1);
Run Code Online (Sandbox Code Playgroud)