首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MongoDB:如何获取集合中最后更新文档的最后更新时间戳

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

Stack Overflow用户
提问于 2017-12-06 16:14:26
回答 3查看 21.8K关注 0票数 10

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

代码语言:javascript
运行
复制
db.collection.find().limit(1).sort({$natural:-1})

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

我知道一种方法是在oplog集合中查询集合中的最后一条记录。但考虑到oplog可能非常大(也不值得信任,因为它是一个有上限的集合),这似乎是一个昂贵的操作。有没有更好的方法来做这件事?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2017-12-06 17:38:18

您可以通过与问题中提到的相同的方式获取上次插入时间:

代码语言:javascript
运行
复制
db.collection.find().sort({'_id': -1}).limit(1) 

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

或者,您可以在文档中添加新字段作为'lastModified'。你也可以签出collection-hooks。我希望这能有所帮助。

票数 7
EN

Stack Overflow用户

发布于 2018-12-30 15:46:09

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2017-12-06 16:19:59

您可以尝试使用,

代码语言:javascript
运行
复制
db.collection.findOne().sort({$natural:-1}).limit(1);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47669659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档