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

时间:2017-12-06 08:14:26

标签: mongodb mongodb-query mongodb-oplog

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:-1)

你可以试试,

   public function post()
    {
        return $this->belongsTo(Post::class);
    }

    public function list()
    {
        return $this->belongsTo(list::class);
    }
相关问题