首页 文章

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

提问于
浏览
4

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

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

但我需要有关上次更新文档的信息(可能是插入或更新) .

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

谢谢!

3 回答

  • 4

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

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

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

    或者,您可以在文档中添加新字段 'lastModified' . 你也可以结账collection-hooks . 我希望这个能帮上忙

  • -1
    • 一种方法是拥有一个保存上次更新时间的字段 . 您可以将其命名为updatedAt . 每次更新文档时,您只需将值更新为当前时间 . 如果您使用ISO格式存储时间,您将能够排序没有问题(这就是我使用的) .

    • 另一种方式是_id字段 .

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

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

  • 1

    你可以试试,

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

相关问题