【问题标题】:MongoDB get all documents that were created in the last 30 minutes from the _id field aloneMongoDB 仅从 _id 字段获取过去 30 分钟内创建的所有文档
【发布时间】:2026-02-15 05:05:01
【问题描述】:

我有一个没有“timeCreated”字段的文档。 我想获取过去 30 分钟内的所有条目。 我听说 _id 字段中包含时间创建逻辑。

我该怎么做?

谢谢!

【问题讨论】:

标签: mongodb spring-data-mongodb mongotemplate nosql


【解决方案1】:

getTimestamp() 将为您提供来自 ObjectId 的日期/时间。

您可以执行以下操作

var oldest = new Date(new Date() - new Date(30 * 60000));
db.collection.find().sort({ _id: -1 }).forEach(function(item) {
  if (item._id.getTimestamp() > oldest){
     ...
  }
});

【讨论】:

  • 如何使用 (item._id.getTimestamp() > old) 过滤结果集?
  • 你到底想做什么?
  • myDocument.find(/**where**/ _id.getTime
  • 谢谢:) 这将非常有帮助
  • 你可以试试$where,但是性能会很糟糕,因为它需要一个表扫描:find({ $where: "this._id.getTimestamp() > new Date(new Date() - new Date(30000 * 60000))" })
最近更新 更多